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。
我正在尝试将我的 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。