निम्नलिखित कोड होने से:स्प्रिंग रेस्ट कंट्रोलर में सादे जेसन बॉडी का उपयोग कैसे करें?
@RequestMapping(value = "/greeting", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE)
@ResponseBody
public String greetingJson(@RequestBody String json) {
System.out.println("json = " + json); // TODO json is null... how to retrieve plain json body?
return "Hello World!";
}
स्ट्रिंग json तर्क हमेशा के बावजूद json शरीर में भेजा जा रहा रिक्त है।
नोट कि मैं स्वचालित प्रकार रूपांतरण नहीं चाहता हूं, मैं सिर्फ सादा जेसन परिणाम चाहता हूं।
यह उदाहरण के लिए काम करता है:
@RequestMapping(value = "/greeting", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE)
@ResponseBody
public String greetingJson(@RequestBody User user) {
return String.format("Hello %s!", user);
}
शायद मैं उपयोग ServletRequest या InputStream तर्क वास्तविक शरीर को पुनः प्राप्त करने के रूप में उपयोग कर सकते हैं, लेकिन मुझे आश्चर्य है कि एक आसान तरीका उपलब्ध है?
'स्ट्रिंग jsonBody = IOUtils.toString (request.getInputStream());' अपाचे के साथ एक लाइनर आप इसे जल्दी से किया की जरूरत है। [और इसी तरह का सवाल।] (Http://stackoverflow.com/questions/5806724/springs-requestbody-providing-empty-string-on-post) – madhead
यह शायद वास्तव में काम करेगा, हालांकि मैं http प्राप्त करने से छुटकारा पाना चाहता हूं कार्रवाई में तर्क के रूप में अनुरोध करें, और स्प्रिंग को स्वचालित रूप से एक var में सामग्री प्राप्त करने दें ... (वैसे भी आपके उत्तर के लिए धन्यवाद) –