2013-01-23 17 views
6

का उपयोग कर नेस्टेड ऑब्जेक्ट्स को Deserializing मैं RestTemplate का उपयोग कर रहा हूं और किसी ऑब्जेक्ट को deserializing समस्याएं हैं। मैं यही कर रहा हूँ। JSON उत्तर लग रहा है, जैसेRestTemplate

{ 
"response": { 
"Time": "Wed 2013.01.23 at 03:35:25 PM UTC", 
"Total_Input_Records": 5, 
},- 
"message": "Succeeded", 
"code": "200" 
} 

एक POJO का उपयोग कर jsonschema2pojo

public class MyClass { 
    @JsonProperty("response") 
    private Response response; 
    @JsonProperty("message") 
    private Object message; 
    @JsonProperty("code") 
    private Object code; 
    private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 
    //bunch of getters and setters here 
} 
public class Response { 
    @JsonProperty("Time") 
    private Date Time; 
    @JsonProperty("Total_Input_Records") 
    private Object Total_Input_Records; 
    private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 
//bunch of getters and setters here 
} 

यहाँ अनुरोध प्रसंस्करण, जहां मैं अपवाद हो रही है में इस Json पेलोड परिवर्तित,

String url = "http://my.site.com/someparams"; 
RestTemplate template = new RestTemplate(
       new HttpComponentsClientHttpRequestFactory()); 
FormHttpMessageConverter converter = new FormHttpMessageConverter(); 
List<MediaType> mediaTypes = new ArrayList<MediaType>(); 
mediaTypes.add(new MediaType("application", "x-www-form-urlencoded")); 
converter.setSupportedMediaTypes(mediaTypes); 
template.getMessageConverters().add(converter); 
MyClass upload = template.postForObject(url, null, MyClass.class); 

यहाँ है निराशाजनक हिस्सा, अपवाद (जानबूझकर छंटनी, पूर्ण नहीं)। मुझे कुछ भी याद आ रही है?

org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Unrecognized field "Time" (Class com.temp.pointtests.Response), not marked as ignorable 
at [Source: [email protected]; line: 1, column: 22 (through reference chain: com.temp.pointtests.MyClass["response"]->com.temp.pointtests.Response["Time"]);] 

+++++ अद्यतन हल ++++++

मैंने देखा स्प्रिंग MappingJackson2HttpMessageConverter जो जैक्सन 2. का उपयोग करता है MappingJacksonHttpMessageConverter मेरी कोड में ऊपर जैक्सन Pre2.0 संस्करणों का उपयोग करता है और यह काम नहीं करता गयी। हालांकि यह जैक्सन 2.0 के लिए काम करता है। मैपिंग जैकसन 2HttpMessageConverter अब उपलब्ध है, अब मैं इसे अपने RestTemplate में जोड़ सकता हूं और सब कुछ ठीक काम करता है :-)। यहाँ लोग हैं, जो एक ही मुद्दा है के लिए कोड, है

String url = "http://mysite.com/someparams"; 
RestTemplate template = new RestTemplate(); 
HttpHeaders headers = new HttpHeaders(); 
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); 
HttpEntity request = new HttpEntity(headers); 
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>(); 
MappingJackson2HttpMessageConverter map = new MappingJackson2HttpMessageConverter(); 
messageConverters.add(map); 
messageConverters.add(new FormHttpMessageConverter()); 
template.setMessageConverters(messageConverters); 
MyClass msg = template.postForObject(url, request, MyClass.class); 
+0

आपको प्रश्न के "संपादन संपादित करें" के साथ अपने स्वयं के प्रश्न का उत्तर देना चाहिए। – hectorg87

उत्तर

0

@JsonSerialize (का उपयोग कर = JsonDateSerializer.class) या @JsonDeserialize (का उपयोग कर = JsonDateDeSerializer.class) org.codehaus.jackson.map की टिप्पणियों का उपयोग करें। JsonDeserializer; यह जेसन स्ट्रिंग में कनवर्ट करने के लिए समस्या या उपयोगकर्ता ऑब्जेक्टमैपर (org.codehaus.jackson.map.ObjectMapper) को हल करेगा।

objectMapper.writeValueAsString (ऑब्जेक्ट); // यह जेसन स्ट्रिंग

संबंधित मुद्दे