我有一个 RestController 类,它有一个按标题搜索电影的方法:
@RequestMapping(value = "/film", method = RequestMethod.POST,
consumes = "application/json", produces = "application/json")
public Film getFilm(@RequestBody String filmSearch){
FilmInfo filmInfo = new FilmInfo();
Film film = filmInfo.getFilm(filmSearch);
return film;
}
如果我发送一个 json 字符串
{
"filmSearch":"<title>"
}
从 Postman 到端点,我收到了空白回复。
然后我做了
System.out.println(filmSearch)
进入方法后发现字符串filmSearch正是我从Postman发送的JSON字符串。我的应用程序没有看到 JSON 并在我的请求中从 filmSearch 中提取值以附加到应用程序内字符串 filmSearch。
如果我删除
consumes = "application/json"
参与 RequestMapping 并发送其有效标题的纯文本字符串,然后我得到一个以 JSON 形式发回的 Film 对象。
不过,我不想在搜索词中使用纯文本,如何在输入方法时正确地将 JSON 转换为字符串?
最佳答案
如果您添加的请求正文是字符串而不是对象。服务器收到的是 String json 而不是 OBJECT。您可以尝试代码:
@RequestMapping(value = "/film", method = RequestMethod.GET, produces = "application/json")
public Film getFilm(@RequestParam("search") String search){
FilmInfo filmInfo = new FilmInfo();
Film film = filmInfo.getFilm(search);
return film;
}
如果您使用 postman :
- 网址:/flim?search=minion
- 方法:GET
- header :内容类型:application/json
关于java - Spring RequestBody 将 JSON 转换为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47568165/