Spring 使用 JSONObject 启动 RequestBody

Spring Boot RequestBody with JSONObject

我正在尝试将我的 RestController 设置为在其中接收一个 json 和另一个 json(我现在不知道第二个 json 的结构)... 类似的东西:

{
    "field1":"value1",
    "jsonField":{
        "anotherField1":1,
        "anotherField2":0.2
    }
}

而我的要求class是这样的:

public class Request {
    private String field1;
    private org.json.JSONObject jsonField;
}

但是当我调用控制器时,field1 已设置,但 jsonField 未设置。它仅通过 {}

设置

编辑:这是控制器方法:

@PostMapping
public ResponseEntity postMethod(@RequestBody Request request) {}

您需要为 jsonField 对象定义您自己的 class 如果您希望它被自动映射。

public class Request {
    private String field1;
    private JsonField jsonField;
}

public class JsonField {
    private Integer anotherField1;
    private Integer anotherField2;
}

如果事先不知道它的结构,方法会有所不同。您可以使用 Map:

public class Request {
    private String field1;
    private Map<String, Object> jsonField;
}

或杰克逊的JsonNode类型

public class Request {
    private String field1;
    private JsonNode jsonField;
}

您可以阅读更多内容 here