带有 JSONObject 的 Spring Boot RequestBody
Posted
技术标签:
【中文标题】带有 JSONObject 的 Spring Boot RequestBody【英文标题】:Spring Boot RequestBody with JSONObject 【发布时间】:2022-01-04 02:57:20 【问题描述】:我正在尝试将我的 RestController 设置为接收其中包含另一个 json 的 json(我现在不知道第二个 json 的结构)... 类似的东西:
"field1":"value1",
"jsonField":
"anotherField1":1,
"anotherField2":0.2
而我的请求类是这样的:
public class Request
private String field1;
private org.json.JSONObject jsonField;
但是当我调用我的控制器时,field1
已设置,但 jsonField
未设置。仅使用 设置
编辑:这是控制器方法:
@PostMapping
public ResponseEntity postMethod(@RequestBody Request request)
【问题讨论】:
【参考方案1】:如果您希望自动映射jsonField
对象,您需要为它定义自己的类。
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阅读更多内容。
【讨论】:
但我现在不知道 jsonField 的结构... 你需要在问题中说明它,因为它改变了方法。 @Teofilo,请查看我的更新答案。 地图解决方案解决了这个问题。谢谢以上是关于带有 JSONObject 的 Spring Boot RequestBody的主要内容,如果未能解决你的问题,请参考以下文章
如何在获取值之前对JSONObject中的每个元素进行空检查?
Spring - HttpMessageConversionException 使用 ResponseEntity 和 Map<String,JSONobject>
Spring Reactive 使用 ServerRequest 获取正文 JSONObject
无法使用类型为“的参数列表”调用“jsonObject”(带有:NSData,选项:JSONSerialization.ReadingOptions,错误:inout NSError?)