如何使用@RequestBody注释映射JSON数据

时间:2015-04-30 11:55:25

标签: json spring

我使用JSON对象从客户端向Spring Framework后端发送HTTP请求,该对象包含属于另一个对象的id的属性。

@RequestBody不知道如何处理这个引用并给我 400无效请求。

我已经读过我可以为我的班级创建一个自定义Mapper。这是唯一的 解决方案还是我需要一些注释?

如果自定义映射器是单一解决方案,您能给出一个示例吗?

我的代码示例:

public class Book {

@Id
private String id;

@DBRef
private Author author;

private String name;

//getters and setters
}

控制器:

...
@RequestMapping("/book")
private Book book(@RequestBody Book book) {
//code
}
...

客户端发送的JSON:

{'name': 'something', 'author': '55422e51dcca4511fd8a0ffc'}

作者是其身份。

2 个答案:

答案 0 :(得分:0)

我建议你做以下任何一种。

  1. 将您的方法更改为以下方式。请改用ModelAttribute

    @RequestMapping("/book")
    
    private Book book(@ModelAttribute Book book) {
    
    }
    
  2. 如果您仍想使用RequestBody,请执行以下操作。

  3. @RequestMapping( “/书”)

    private Book book(@RequestBody String body) {
    
      //Now use any JSON parser(Gson or Jackson) 
    
      Gson gson = new Gson();
      Book book = gson.fromJson(body, Book.class);       
    }
    

答案 1 :(得分:0)

你必须使用spring并添加api gson 依赖关系,这对于将json对象DTO发送到 @RequestBody 是必要的。任何例子都使用api jackson,但gson用于spring的最新版本