0

我有一个来自服务器的 JSON 字符串,我无法控制它。
我通过 jsonschema2pojo 库的编程使用生成了 Java 类。
我正在使用 GSON 将 JSON 反序列化为我的 Java 对象。

这是 JSON 的示例。

"description_by_id": {
    "50": {
        "field1": "value1",
        "field2": "value2",
        "field3": "value3"
    }
}

“50”子类实际上只是 18 个类中的 1 个,它们被类似地命名为一个数字。
当 jsonschema2pojo 生成 Java 类时,它可以理解地在前面添加一个下划线来创建类名(所以,_50)。

jsonschema2pojo 使用此成员生成 DescriptionById 类:

@JsonProperty("50") private com.me.models._50 _50;

getter 看起来像这样(setter 类似):

@JsonProperty("50") public com.me.models._50 get50() { return _50; }

我正在使用这样的 GSON:

Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();

但是 _50 对象和其他 17 个类似的对象在 GSON 完成后都是空的,我检查了 JSON 中的相应点实际上是用真实值填充的。

我可以在这条链上做些什么来让它正常工作,而无需手动解决这个问题?

4

1 回答 1

1

“50”子类实际上只是 18 个类中的 1 个,它们被类似地命名为一个数字

当您获得一个没有 Java 类的额外 ID 时会发生什么?Gson 不知道该怎么处理它......

不要上课。使用地图。

制作这个“内在”的 POJO

public class Inner {

    private String field1;
    private String field2;
    private String field3;

}

和外 POJO

public class Outer {
    private TreeMap<String, Inner> description_by_id;
}

然后你会有someOuter.getDescriptionById("50").getField1()

(根据需要添加回 Gson 属性)

于 2017-11-16T05:23:33.493 回答