我使用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'}
作者是其身份。
答案 0 :(得分:0)
我建议你做以下任何一种。
将您的方法更改为以下方式。请改用ModelAttribute
。
@RequestMapping("/book")
private Book book(@ModelAttribute Book book) {
}
如果您仍想使用RequestBody,请执行以下操作。
@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的最新版本