spring-web:将@RequestBody作为JSONObject获取

时间:2016-12-13 14:08:36

标签: java json spring spring-web

我在使用spring-web库时遇到了阻塞(通过Gradle安装,因此安装了依赖项)。

我知道我可以使用@RequestBody输入POSTed请求内容并通过Jackson Unmarshaller将其转换为POJO,如下所示:

@RequestMapping(path = "/action", method = RequestMethod.PUT)
public MyResponsePOJO post(@RequestBody MyRequestPOJO request){
    // ...

但是,我想将POSTed内容(JSON)作为Java JSONObject

我尝试将@RequestBodyJSONObject一起使用,但我收到了HTTP 400错误。

有几种方法可以解决这个问题:

  1. 输入@RequestBody作为String并使用Jackson将其解析为JSONObject。 (这涉及我手动转换请求内容,我觉得Jackson或Spring应该自动执行)

  2. 在我的函数中添加BufferedReader参数,并与Jackson解析请求内容。 (同样,这涉及手动转换)

  3. 输入@RequestBody作为Map<String, String>(但我的请求并非完全符合字符串值)

  4. 输入@RequestBody作为Map<String, Object>(这会导致未经检查的广告投放等问题)

  5. Second Last Resort:使用Request属性创建Map<String, Object> POJO(这会导致与上述相同的问题)

  6. 最后的手段:为每个预期的输入创建POJO(非常不可行,因为有很多预期的输入)

  7. 那么,有没有自动方式可以将@RequestBody作为JSONObject获取,还是应该创建POJO?

    全部谢谢:)

0 个答案:

没有答案