我在使用spring-web库时遇到了阻塞(通过Gradle安装,因此安装了依赖项)。
我知道我可以使用@RequestBody
输入POSTed请求内容并通过Jackson Unmarshaller将其转换为POJO,如下所示:
@RequestMapping(path = "/action", method = RequestMethod.PUT)
public MyResponsePOJO post(@RequestBody MyRequestPOJO request){
// ...
但是,我想将POSTed内容(JSON)作为Java JSONObject
。
我尝试将@RequestBody
与JSONObject
一起使用,但我收到了HTTP 400错误。
有几种方法可以解决这个问题:
输入@RequestBody
作为String
并使用Jackson将其解析为JSONObject
。 (这涉及我手动转换请求内容,我觉得Jackson或Spring应该自动执行)
在我的函数中添加BufferedReader
参数,并与Jackson解析请求内容。 (同样,这涉及手动转换)
输入@RequestBody
作为Map<String, String>
(但我的请求并非完全符合字符串值)
输入@RequestBody
作为Map<String, Object>
(这会导致未经检查的广告投放等问题)
Second Last Resort:使用Request
属性创建Map<String, Object>
POJO(这会导致与上述相同的问题)
最后的手段:为每个预期的输入创建POJO(非常不可行,因为有很多预期的输入)
那么,有没有自动方式可以将@RequestBody
作为JSONObject
获取,还是应该创建POJO?
全部谢谢:)