我有一个标准的Spring 4 MVC应用程序。我有REST端点,它接受ResponseBody json并映射到我的Java对象。这很有效。
但现在我需要获取原始JSON,因为我没有Java对象来映射它。我的端点如下所示:
@RequestMapping(value="", method = RequestMethod.POST)
@ResponseBody
public Object createObject(@RequestBody JsonObject objectJson) {
当我将json POST到此端点时,我得到一个空的JSON字符串。 objectJson不是NULL,但是当我像这样调试时:
System.out.println(objectJson.toString());
我得到:{}
当我将方法签名更改为:
时public Object createObject(@RequestBody String objectJson) {
我收到400"客户端发送的请求在语法上不正确"
如何将JSON作为可以手动解析的String或者我可以使用的JsonObject获取?
答案 0 :(得分:-2)
为了使用@RequestBody
接收JSON对象,您需要定义一个POJO类。假设您的原始JSON看起来像
{"id":"123", "name":"John"}
POJO看起来像
public class User {
private String id;
private String name;
...
// setters and getters
}
您的Controller方法将
@RequestMapping(value="", method = RequestMethod.POST)
@ResponseBody
public Object createObject(@RequestBody User user) {
String id = user.getId();
String name = user.getName();
...
}