来自JSON的GSON具有数字类名称

时间:2017-11-16 05:14:25

标签: java json gson jsonschema2pojo

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

以下是JSON的示例。

currentWidth

那" 50"子类实际上只是18个类中的1个,它们同样被命名为数字 当jsonschema2pojo生成Java类时,可以理解的是在下划线之前创建类名(因此,_50)。

jsonschema2pojo使用以下成员生成DescriptionById类:

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

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

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

我正在使用GSON:

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

但是在完成GSON后,_50对象和其他类似的对象都是null,我已经检查过JSON中的相应位置实际上是用实际值填充的。

我能做些什么才能让它正常工作而不需要手动解决这个问题?

1 个答案:

答案 0 :(得分:1)

  

那" 50"子类实际上只是18个类中的一个,它们同样被命名为数字

当你得到一个你没有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属性)