[英]Jackson JSON deserialization
我正在尝试使用Jackson反序列化以下Json有效负载:
[{
"owner" : "345MWyh7w4hY98W6",
"url" : "http://www.google.com",
"items" : [{
"createdAt" : 1342099411415,
"amount" : 1,
"note" : "item 1",
"product" : "car"
}, {
"createdAt" : 1342100231111,
"amount" : 4,
"note" : "item 2",
"product" : "wheels"
}],
"createdAt" : 1342096943777,
"title" : "Car order",
"description" : "car order",
"id" : "98hw85Y945e6U358"
}]
我正在使用以下代码反序列化:
ObjectMapper mapper = new ObjectMapper().configure(
DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
List<Order> result = null;
try {
result = mapper.readValue(jsonString,new TypeReference<List<Order>>() { });
} catch (IOException e) {
e.printStackTrace();
}
但是我收到以下错误:
org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo
SEVERE: MessageBodyWriter not found for media type=application/json, type=class org.glassfish.jersey.client.InboundJaxrsResponse, genericTyp
e=class org.glassfish.jersey.client.InboundJaxrsResponse.
Feb 06, 2015 8:14:45 PM org.glassfish.jersey.filter.LoggingFilter log
Orders类是由RAML-> JAX-RS maven插件生成的,它没有零参数构造函数。 除了修改生成的类以添加零参数构造函数之外,是否有其他方法可以进行反序列化?
能够解决问题。 我为订单创建了一个包装DTO,如下所示:
@XmlRootElement
public class OrderDTO {
private List<Order> orderList;
public List<Order> getOrderList() {
return orderList;
}
public void setOrderList(List<Order> orderList) {
this.orderList = orderList;
}
public void addOrder(Order order){
orderList.add(order);
}
public OrderDTO() {
super();
orderList = new ArrayList<Order>();
}
}
在这里,我能够添加零参数构造函数。 现在它可以工作了:)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.