2013-06-18 3 views
0

Я передаю строку json из restclient в resteasy webservice для пользователя объекта модели.Вызвано: org.codehaus.jackson.map.JsonMappingException: не удается десериализовать экземпляр com.model.user из токена START_ARRAY

Я поставил Content-Type = применение/JSON

и моя JSON строка в теле выглядит следующим образом,

{ 
    "id": "100", 
    "email": "email", 
    "add": [ 
     { 
      "lastName": "lastName", 
      "firstName": "firstName" 
     }, 
     { 
      "firstName": "firstName", 
      "lastName": "lastName" 
     } 
    ] 
} 

Если я удалить добавить объект массива, как показано ниже, то я получаю ответ как и ожидалось.

{ 
    "id": "100", 
    "email": "email", 
} 

Когда я пытаюсь отправить добавить массив, сервер бросает изречение исключение,

Caused by: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of com.model.add out of START_ARRAY token 

Я попробовал этот путь также, но он не работает,

{ 
    "id": "100", 
    "email": "email", 
    "lastName": "Something Four", 
    "firstName": "Something Five" 
} 

Тогда ниже,

Caused by: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "lastName" (Class com.model.user), not marked as ignorable 

Мои объекты модели ниже,

public class user implements Serializable { 
    @Id 
    @Column(name="Id", unique=true, nullable=false) 
    private int id; 

    @Column(name="email", nullable=true, length=60) 
    private String email; 

    @ManyToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER) 
    @JoinColumn(name="Id", nullable=false) 
    private add add; 
} 



public class add implements Serializable { 

    @Id 
    @Column(name="Id", unique=true, nullable=false) 
    private String id; 

    @Column(name="LastName", nullable=true, length=128) 
    private String lastName; 

    @Column(name="FirstName", nullable=true, length=128) 
    private String firstName; 

} 

Мой класс обслуживания

@POST 
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML }) 
    public Response addAccount(@FormParam("id") String id, 
      @FormParam("lastName") String lastName, 
      @FormParam("firstName") String firstName, 
      @FormParam("email") String email{ 



      user.setId(id); 
      add.setLastName(lastName); 
      add.setFirstName(firstName); 
      user.setEmailAddress(email); 
} 

Может кто-нибудь мне помочь в прохождении объекта одна модель внутри другой модели объекта в виде массива в JSON строку?

+0

Пожалуйста, покажите нам JSON, который вы отправляете. Джексон говорит вам, что это не массив JSON. – fge

+0

это JSON я использую, { "ID": "100", "электронная почта": "электронная почта", "добавить": [ { "LastName": "LastName", "FirstName": "FirstName" }, { "FirstName": "Имя", "LastName": "LastName" } ] } я подтверждено его с помощью jsonlint и его показ, как действительный JSON \ – user1660325

+0

это не. вопрос. Я спрашиваю, что вы отправляете в качестве массива _add_, который вы удалили. – fge

ответ

2

У меня такая же ошибка, решение я нашел; геттеры и сеттеры отсутствовали в моем классе модели. Возможно, это решит проблему.

+1

Это не ответ. Поэтому напишите это в разделе комментариев. См. Эту ссылку - http://stackoverflow.com/help/how-to-answer –

+0

Спасибо @techlearner! – shanehoban