Ответ 1
edit: это решение работает только для jackson < 2.0
В вашем случае есть простое решение:
- Вам необходимо аннотировать класс модели с помощью
@JsonRootName(value = "user")
; - Вам необходимо настроить ваш картограф с помощью
om.configure(Feature.UNWRAP_ROOT_VALUE, true);
(как для 1.9) иom.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
(для версии 2).
Что это!
@JsonRootName(value = "user")
public static class User {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(final Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
}
ObjectMapper om = new ObjectMapper();
om.configure(Feature.UNWRAP_ROOT_VALUE, true);
System.out.println(om.readValue("{ \"user\": { \"name\":\"Sam Smith\", \"age\":1 }}", User.class));
это напечатает:
User [name=Sam Smith, age=1]