我有一个名为Example的自定义对象,它有一个org.json.JSONObject作为mongo查询。
public class ExampleObject {
private JSONObject query;
private String[] projections;
private Number limit;
// Constructors, getters and setters
}
我正在使用这样的REST控制器:
@RestController
@RequestMapping("/example")
public class ExampleRestController {
@RequestMapping(value = "/search", method = RequestMethod.POST)
@ResponseBody
public String example(@RequestBody ExampleObject example) {
return "This is an example";
}
然后,我向Postman提出以下要求:
正文如下(我已使用http://jsonlint.com检查了JSON的有效性):
{
"query":{
"field1":"value1",
"field2":"value2"
},
"projections":["field3, field4"],
"limit":3
}
结果是:对象“example”的投影和限制已正确设置,但查询是空的JSONObject(非null)。如果我不发送字段查询,则对象“example”上的JSONObject变量为null。
我不明白为什么字段查询没有设置好。我想Spring将@RequestBody json映射到ExampleObject。
答案 0 :(得分:1)
Spring(特别是Jackson)不知道如何反序列化JSONObject
。您可以改为使用com.fasterxml.jackson.core.JsonNode
。