无法 return class 的 JSONObject 字段正确

Unable to return a JSONObject field of a class properly

我有一个如下所示的 DTO:

@Getter
@Setter
@AllArgsConstructor
public class LightRoundResponse {
    private String round;
    private JSONObject fields;
}

我能够从数据库中存储和获取 JSON 对象。使用 ResultSet 的字段设置 DTO 的字段属性后,我能够在调试时看到包含正确数据的 JSON对象。

但是我得到的回复是:

{
    "round": "A Round",
    "fields": {
        "empty": false
    }
}

fields 对象不正确,我认为因为它是一个 JSONObject,所以它可能是个问题,但我不确定。 我怎样才能得到正确的回应而不是 "empty": false

将 JSONObject 转换为 Map 即可。

示例:

public class LightRoundResponse {
    private String round;
    private Map fields;

    public void setFields(JSONObject fields){
        this.fields = fields.toMap();
    }
}

我希望我能理解为什么 JSONObject 不起作用,但似乎社区也不知道。 因此发布一个解决方法,可以帮助面临同样问题的人。

Jackson 不知道如何序列化JSONObjectclass。预期的方法是实际使用 Map<String, Object>:

@Getter
@Setter
@AllArgsConstructor
public class LightRoundResponse {
    private String round;
    private Map<String, Object> fields;
}