如何使用Spring annotaion在响应主体中获取JSON

时间:2016-10-03 15:54:46

标签: json spring-mvc

我有一个标准的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获取?

1 个答案:

答案 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();
    ...
}