带有 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?)

如何在 Spring Boot 中的 JSONObject 内的 JSONArray 中放置 2 个或更多值?

JSONObject.toBean怎么转化带有Timestamp类型的对象