2015-03-05 10 views
0

Я создал службу отдыха, которая отлично работает в XML-запросе (класс службы Rest Service, созданный JAXB). Когда я пытаюсь отправить запрос Json, он бросает исключение.JSON, JAXB, JSON Rest

SEVERE: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container 
org.codehaus.jackson.map.JsonMappingException: Can not instantiate value of type [simple type, class Transaction] from JSON String; no single-String constructor/factory method (through reference chain: 
class Transaction which is inner class . 

Мой класс запроса генерируется из схемы с использованием JAXB, Мой метод геттер как ниже, но не метод установки.

public List<Transaction> getORIG() { 
     if (origtrans == null) { 
      origtrans = new ArrayList<Transaction>(); 
     } 
     return this.origtrans; 
    } 

Мои Json Запрос ниже

{ 
    "LOB_CD": "42424" 
    "ORIGINALTRANSACTION" : [ 
    "LOGON_ID" : "TEST" 

    ] 
} 

Когда я addiong оригинальный Сделку это бросает ошибку в противном случае это работает нормально.

Не могли бы вы помочь мне в этом. Спасибо заранее.

ответ

0

Прежде всего убедитесь, что вы используете правильный JSON, например:

{ 
    "LOB_CD": "42424", 
    "ORIGINALTRANSACTION": { 
     "LOGON_ID": "TEST" 
    } 
} 

Кроме того, было бы неплохо, если бы вы могли бы показать нам Transaction класса.

+0

После внесения этих изменений я получаю ниже ошибки – Patel

+0

Не удается десериализовать экземпляр java.util.ArrayList из токена START_OBJECT – Patel

+0

[Источник: org.apache.catalina.connector.CoyoteInputStre Я @ a224b5; строка: 11, столбец: 17] (через ссылочную цепочку: Класс трансляции – Patel

0

Это работает. я следующие шаги 1) Добавлен пустой конструктор 2) Добавлено эту аннотацию для списка

@JsonDeserialize(as=ArrayList.class, contentAs=Transaction.class) 

3) изменить объект JSON в { "LOB_CD": "42424" "ORIGINALTRANSACTION" : [ { "LOGON_ID" : "TEST" } ] }

Спасибо большое, Patel