我想把一个json解析成一个对象,这个对象提供了连接到银行的每个实体的详细信息。
我的json看起来像:
{
"href" : "abc",
"configurations" :
[
{
"type" : "bank-customer",
"properties" : {
"cust-name" : "foo",
"acc-no" : "12345"
}
},
{
"type" : "bank-employee",
"properties" : {
"empl-name" : "foo",
"empl-no" : "12345"
}
}
]
}
不同实体“type”的属性不同。
为此创建pojo是一项挑战。my properties.java必须包括所有属性,而不考虑属性的类型:
public class Configurations {
@SerializedName("type")
@Expose
private String entityType;
@SerializedName("properties")
@Expose
private Properties properties;
}
public class Properties {
@SerializedName("cust-name")
@Expose
private String custName;
@SerializedName("empl-no")
@Expose
private String emplNo;
@SerializedName("empl-name")
@Expose
private String emplName;
@SerializedName("acc-no")
@Expose
private String accNo;
}
当我有很多实体类型和每个实体类型的属性时,这是很痛苦的。有没有其他方法可以将这个json解析为不同实体类型的不同属性对象?我使用gson来解析json
注意:我不能对json本身做任何更改。
3条答案
按热度按时间2izufjch1#
您可能需要创建自己的反序列化程序,请看这个示例。
可能的实现
反序列化程序:
波乔:
银行
人员界面
实施人员、员工或客户
以及测试它的主要类
希望对你有帮助。
iyfamqjs2#
它可以很容易地解决使用
alternate
@serializedname注解中的关键字。9rygscc13#
我完全同意毛罗斯的回答。
但您也可以创建接口层次结构并实现示例创建者。