【问题标题】:Using generic JSON Object as Request Body使用通用 JSON 对象作为请求正文
【发布时间】:2018-07-03 09:59:09
【问题描述】:
我有一个控制器,它接收 JSON 对象作为输入。但问题是,JSON 的内容会因不同的请求而有所不同,所以我无法将 RequestBody 映射到 POJO。
有没有办法可以将输入参数指定为通用 JSONObject 而无需指定特定的 POJO。
我试过@RequestBody JSONObject inputJson。但这会从客户端抛出错误的请求。
我使用 spring 3.2.13 和 Angular 作为前端。
任何帮助深表感谢。谢谢。
【问题讨论】:
标签:
json
spring
angular
spring-mvc
【解决方案1】:
这在一定程度上取决于您用于 JSON 转换的内容。但您可能需要将输入作为字符串接受并生成 JSONObject。
@RequestBody String inputJson
JSONObject jsonObj = new JSONObject(inputJson);
或者将输入处理为地图并直接使用它。大多数版本的 Jackson 都会为您执行此转换:
@RequestBody Map<String, Object> inputData)
JSONObject jsonObj = new JSONObject(inputData);
在地图情况下,您可能不需要 JSONObject,但您可以根据需要生成它。
【解决方案2】:
您是否尝试将 JSON 转换为字符串输入并转换回 JSON?检查这个thread。