服务器发送一个 JSON。格式不同。 例如:
{
"firstName": "X",
"lastName": "XXX",
"address": {
"street": "John Street, 10",
"postalCode": "12311"
},
"phoneNumbers": [
"812 123-1234",
"916 123-4567"
]
}
但是服务器可以发送另一个JSON
{
"firstName": "X",
"lastName": "XXX",
"address": "John Street, 10",
"postalCode": "101101",
"phoneNumber": "812123-1234"
}
还有我的 Format1.java
public class Format1 {
@SerializedName("firstName")
public String firstName;
@SerializedName("lastName")
public String lastName;
@SerializedName("address")
public Address address;
public class Address {
@SerializedName("street")
public String street;
@SerializedName("postalCode")
public String postalCode;
}
@SerializedName("phoneNumbers")
public String[] phoneNumbers;
}
和Format2.java
public class Format2 {
@SerializedName("firstName")
public String firstName;
@SerializedName("lastName")
public String lastName;
@SerializedName("street")
public String street;
@SerializedName("postalCode")
public String postalCode;
@SerializedName("phoneNumber")
public String phoneNumber;
}
应用程序不知道将从服务器收到什么答复。 Gson 如何理解要使用什么类?
最佳答案
如果您确定在 Format1 中成员名称是“phoneNumbers”,而在 Format2 中则是“phoneNumber”。您可以先查看 JSON 字符串来决定应该使用哪种类型的格式类。
更公平的方法可能是创建您自己的反序列化器方法并检查其中的名称和类型。
关于java - 反序列化更改内部节点的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20254329/