java - Spring RequestBody 将 JSON 转换为 String

标签 java spring rest deserialization

我有一个 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/

相关文章:

java - Spring MVC注解@ModelAttribute

angular - 授权 header 未通过 HTTPS 加密

java - 在 Java 上找不到符号错误?

java - Spring Boot 桌面/CLI 应用程序中组件的正确@Scope 是什么?

java - QueryDsl 错误。未生成 Q 类

java - 运行 spring 应用程序时出错( org.h2.jdbc.JdbcSQLNonTransientConnectionException : URL format error)

python - 在 Django 中实现 REST Web 服务的框架

php - Stripe 签账卡使用 php Rest api 时出现 fatal error

Eclipse 中的 Java Socket 聊天

java - 使用 Gradle 添加提供的依赖项来测试类路径