无法 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 不知道如何序列化JSONObject
class。预期的方法是实际使用 Map<String, Object>
:
@Getter
@Setter
@AllArgsConstructor
public class LightRoundResponse {
private String round;
private Map<String, Object> fields;
}
我有一个如下所示的 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 不知道如何序列化JSONObject
class。预期的方法是实际使用 Map<String, Object>
:
@Getter
@Setter
@AllArgsConstructor
public class LightRoundResponse {
private String round;
private Map<String, Object> fields;
}