2014-10-23 1 views
0

у меня Джексон объект:десериализация JSON для работы объектов Джексона, но не при использовании Джерси

@JsonInclude(JsonInclude.Include.NON_NULL) 
@JsonIgnoreProperties(ignoreUnknown = true) 
public class User { 
    @Id @ObjectId 
    private String _id; 
    private String firstName; 
    private String lastName; 

    public Address address; 
    //getters/Setters 
} 

Когда я запускаю мое модульное тестирование, чтобы преобразовать JSON строку в объект Джексона с по умолчанию ObjectMapper, я могу видеть что адрес правильно преобразован! => Тест проходит

@Test 
public void UserWithAddressShouldGiveValidJSONObject() throws Exception { 

    //Given 
    String userJSON = "{\"firstName\":\"Michel\",\"lastName\":\"Thom\",\"address\":{\"no\":\"12\",\"street\":\"example street\",\"postalCode\":\"555\",\"city\":\"New York\"}}"; 

    //When 
    ObjectMapper mapper = new ObjectMapper(); 
    User user = mapper.readValue(userJSON, User.class); 

    //Then 
    assertEquals("Michel", user.getFirstName()); 
    assertEquals("Thom", user.getLastName()); 
    assertEquals("New York", user.getAddress().getCity()); 
} 

Но когда я получаю же JSON в Джерси, объект Адрес пуст!

@POST 
@Consumes("application/json") 
public Response saveUser(User user) throws Exception { 
user.toString(); 
} 

Json получил от Джерси:

{ "firstName" : "Michel", "lastName" : "Thom", "address" : { }} 

Что я не хватает?

ответ

1

У вас есть это объявление в файле web.xml?

<init-param> 
    <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
    <param-value>true</param-value> 
</init-param> 

Я использую это в проекте в Джерси и не испытал вашу проблему. Я читал, что это помогает с разбором объектов из JSON с вложенными JSONS (и обратно).

Надеюсь, это поможет.

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