我正在使用某种API,它以下列格式返回JSON数据:
entities {
entity#1 { [property#1:value, property#2:value] },
entity#2 { [property#3:value, property#4:value] }
}
此JSON中的实体是手动定义的,这意味着每个实体都可以具有唯一的属性。解析此类数据的最佳方法是什么?
目前,我正在为我在API上定义的每个实体创建一个唯一的类,但是我定义的实体数量可能超过100个。
在Java中是否有办法创建一个预先定义了共享属性的单个类,然后在运行时向同一个类添加属性?
答案 0 :(得分:1)
是的,您可以使用Jackson进行反序列化(http://www.baeldung.com/jackson-deserialization)并定义一个自定义映射器,将动态变量反序列化为Map
。
答案 1 :(得分:0)
您的实体可能共享一些常见属性,而其他属性则不同。在这种情况下,一个体面的折衷方法是将一个包含公共属性的类作为类字段。其余的需要存储在Map中,键值对。这允许您至少拥有一些类结构,而不会有一百个略有不同的类。
像
这样的东西private String someProperty;
private boolean someOtherCommonProperty;
...
private Map<String, Object> allTheOtherProperties;
有关反序列化的详细信息,请查看以下文章: http://www.baeldung.com/jackson-map
具体为4.2。地图反序列化