作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 jackson api 解析 json,并包含以下详细信息。但我收到错误。请查找以下代码和堆栈跟踪详细信息。
JSON
[{"id":1001,"cyPerReffe":1200,"distPercentage":"0"},{"id":1002,"cyPerReffe":1000,"distPercentage":"10"},{"id":1003,"cyPerReffe":800,"distPercentage":"20"},{"id":1004,"cyPerReffe":750,"distPercentage":"10"},{"id":1005,"cyPerReffe":700,"distPercentage":"10"},{"id":1006,"cyPerReffe":650,"distPercentage":"10"},{"id":1007,"cyPerReffe":600,"distPercentage":"20"},{"id":1008,"cyPerReffe":300,"distPercentage":"5"},{"id":1009,"cyPerReffe":333,"distPercentage":"7"},{"id":1010,"cyPerReffe":"32","distPercentage":"8"}]
Controller 类
ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
PublisheDataList publisheDataList = mapper.convertValue(json, PublisheDataList.class);
下面的类(class)是我的 Bean 类(class)。PublisheData.java
private Long id;
private Long cyPerReffe;
private String distPercentage;
// with setter and getters
PublisheDataList.java
List<PublisheData> publisheDataList;
//with setter and getters
我收到以下错误。
java.lang.IllegalArgumentException: Can not deserialize instance of models.PublisheDataList out of START_ARRAY token
at [Source: N/A; line: -1, column: -1]
at org.codehaus.jackson.map.ObjectMapper._convert(ObjectMapper.java:2502)
at org.codehaus.jackson.map.ObjectMapper.convertValue(ObjectMapper.java:2468)
at controllers.RYSController.publishReferenceYield(RYSController.java:79)
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$22$$anonfun$apply$62.apply(routes_routing.scala:318)
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$22$$anonfun$apply$62.apply(routes_routing.scala:318)
at play.core.Router$HandlerInvoker$$anon$6$$anon$2.invocation(Router.scala:175)
at play.core.Router$Routes$$anon$1.invocation(Router.scala:355)
at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:50)
at play.GlobalSettings$1.call(GlobalSettings.java:63)
at play.core.j.JavaAction$$anon$2.apply(JavaAction.scala:80)
at play.core.j.JavaAction$$anon$2.apply(JavaAction.scala:79)
at play.libs.F$Promise$PromiseActor.onReceive(F.java:425)
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:159)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:425)
at akka.actor.ActorCell.invoke(ActorCell.scala:386)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:230)
at akka.dispatch.Mailbox.run(Mailbox.scala:212)
at akka.dispatch.ForkJoinExecutorConfigurator$MailboxExecutionTask.exec(AbstractDispatcher.scala:502)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:262)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:975)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1478)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
Caused by: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of models.PublisheDataList out of START_ARRAY token
at [Source: N/A; line: -1, column: -1]
at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
at org.codehaus.jackson.map.deser.StdDeserializationCenter code hereontext.mappingException(StdDeserializationContext.java:219)
at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:212)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromArray(BeanDeserializer.java:875)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:597)
at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2704)
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1315)
at org.codehaus.jackson.map.ObjectMapper._convert(ObjectMapper.java:2498)
... 21 more
最佳答案
您不需要 PublisheDataList 中间类来反序列化为 Collection,请尝试直接使用映射器反序列化
List<PublisheData> publisheDataList = mapper.convertValue(json, mapper.getTypeFactory().constructCollectionType(List.class, PublisheData.class));
关于java - 无法反序列化模型实例。PublisheDataList 超出 START_ARRAY token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21090612/
我正在尝试使用 jackson api 解析 json,并包含以下详细信息。但我收到错误。请查找以下代码和堆栈跟踪详细信息。 JSON [{"id":1001,"cyPerReffe":1200,"d
我是一名优秀的程序员,十分优秀!