2012-02-20 63 views
8

有人可以幫我弄清楚需要添加什麼嗎?JSON:無法識別的字段「值」(<objectClass>),未標記爲可忽略

JSON:

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

Object類

@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()進行的servlet 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 2012-02-21 03:38:20

+0

更新爲使用RestTemplate – 2012-02-21 17:07:38

相關問題