मैं JSON POST अनुरोधों को संभालने के लिए स्प्रिंग एमवीसी का उपयोग कर रहा हूं। कवर के नीचे मैं जैक्सन जेएसओएनएचटीपी मैसेज कनवर्टर का उपयोग कर रहा हूं जो जैक्सन जेएसओएन प्रोसेसर पर बनाया गया है और जब आप एमवीसी: एनोटेशन-संचालित का उपयोग करते हैं तो सक्षम है।वसंत और जैक्सन पूर्ण डेटा बाध्यकारी के साथ REST
@RequestMapping(value="/executeActions", method=RequestMethod.POST)
public @ResponseBody String executeActions(@RequestBody List<ActionImpl> actions) {
logger.info("executeActions");
return "ACK";
}
मैं पाया है जैक्सन के नक्शे कि java.util.LinkedHashMap मदों की एक सूची के लिए requestBody (सरल डेटा बाइंडिंग):
अपनी सेवाओं में से एक कार्रवाई की एक सूची प्राप्त करता है। इसके बजाय, मैं अनुरोध टाइप की गई वस्तुओं की सूची (इस मामले में "ActionImpl") से बाध्य होना चाहता हूं।
मैं जानता हूँ कि यह करने के लिए आसान है अगर आप जैक्सन के ObjectMapper सीधे का उपयोग करें:
List<ActionImpl> result = mapper.readValue(src, new TypeReference<List<ActionImpl>>() { });
लेकिन मैं सोच रहा था सबसे अच्छा तरीका है इस लक्ष्य को हासिल करने के लिए क्या जब वसंत MVC और MappingJacksonHttpMessageConverter का उपयोग कर। कोई संकेत?
executeActions(@RequestBody TypeReference<List<ActionImpl>> actions)
मैं इसे करने की कोशिश नहीं की है, लेकिन अपने प्रश्न के आधार पर यह पहली बात मैं कोशिश करेगा है:
धन्यवाद
आप सही हैं और जिस चाल का आपने प्रस्ताव दिया है वह काम करता है। बहुत बहुत धन्यवाद –
यह समस्या स्प्रिंग 3.1 में हुई थी लेकिन वसंत 3.2 में तय की गई थी: https://jira.spring.io/browse/SPR-9570 – Martin