簡體   English   中英

Jackson JSON反序列化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM