2012-02-20 24 views
8

Ai đó có thể giúp tôi tìm ra những gì cần phải được thêm vào không?JSON: Trường không được công nhận "giá trị" (<objectClass>), không được đánh dấu là có thể bỏ qua

JSON:

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

lớp 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; 

Tuy nhiên nó được "Servlet.service() cho servlet appServlet ném ngoại lệ

org.codehaus.jackson.map .exc.UnrecognizedPropertyException: Trường không được công nhận "giá trị"(), không được đánh dấu là có thể bỏ qua "

Trả lời

9

Hãy thử thêm này để mapper của bạn cấu hình

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

Nếu bạn sử dụng RestTemplate bạn sẽ cần phải cấu hình cơ bản jackson mapper. Bạn có thể thực hiện việc này bằng cách định cấu hình trình ánh xạ của bạn và đặt nó trong trình chuyển đổi. Xem mã bên dưới.

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); 

Xem ở đây để biết thêm chi tiết: https://jira.springsource.org/browse/ANDROID-45

+0

Cảm ơn bạn đã trả lời. Nhân tiện, tôi không sử dụng ObjectMapper, thay vào đó chúng tôi sử dụng RestTemplate. – exception01

+0

Đã cập nhật để sử dụng RestTemplate –

Các vấn đề liên quan