2012-02-20 2 views
8

Может кто-нибудь помочь мне разобраться, что нужно добавить?JSON: Нераспознанное поле «значение» (<objectClass>), не отмечено как невежественное

JSON:

{"value":{"keyword":"better","correct":"","page":0,"size":10,"cost":51,"total":1107}} 

Класс объекта

@JsonAutoDetect 
@JsonSerialize(include = Inclusion.NON_NULL) 
@JsonRootName(value = "value")  
public class Response { 

private int page; 
private int size; 
private int total; 
private int cost; 
private int result; 

private String keyword; 
private String correct; 

Тем не менее он получает «Servlet.service() для сервлета appServlet бросил исключение

org.codehaus.jackson.map .exc.UnrecognizedPropertyException: Нераспознанное поле "value"(), не помеченное как игнорируемое "

ответ

9

Попробуйте добавить это к вашему картографу конфигурации

mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true); 
mapper.configure(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE, true); 

Если вы используете RestTemplate вам нужно будет настроить, лежащий в основе Джексона картографа. Вы можете сделать это, настроив свой картограф и установив его в конвертер. См. Код ниже.

ObjectMapper mapper = new ObjectMapper(); 
mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true); 
mapper.configure(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE, true); 


MappingJacksonHttpMessageConverter messageConverter = new MappingJacksonHttpMessageConverter(); 
messageConverter.setObjectMapper(mapper); 
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>(); 
messageConverters.add(messageConverter); 
RestTemplate restTemplate = new RestTemplate(); 
restTemplate.setMessageConverters(messageConverters); 

Смотрите здесь для более подробной информации: https://jira.springsource.org/browse/ANDROID-45

+0

Спасибо за ответ. Кстати, я не использую ObjectMapper, вместо этого мы используем RestTemplate. – exception01

+0

Обновлено для использования RestTemplate –

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