2015-02-07 5 views
0

Я пытаюсь десериализации следующий JSon полезной нагрузки с помощью Джексон:Джексон 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 plug-in, и это не имеет нулевого аргумента конструктор ument. Есть ли способ сделать эту де-сериализацию, отличную от модификации сгенерированного класса, чтобы добавить конструктор zero-args?

+0

проверить это http://stackoverflow.com/questions/23601842/jersey-messagebodywriter-not-found-for-media-type-application-json-type-class У вас обнаружено исключение MessageBodyWrite. –

ответ

0

Был в состоянии исправить работу. Я создал обертку 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>(); 
    } 
} 

здесь я был в состоянии добавить конструктор нуль-арг. Теперь это работает :).

Смежные вопросы