服務器發送一個JSON。格式不同。 例如:反序列化一個更改內部節點的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如何理解什麼類可以使用?
你寫/您可以更改創建JSON在服務器端代碼? – Scott
不幸的是,這個解決方案無法完成。代碼有效並且不會改變:( –
那麼,因爲你知道每個JSON選項的結構,一個(也許不是最好的)解決方案是在你知道它的結構時就詢問響應,即如果值的地址標記是另一個JSON對象,或者如果數字標記是一個數組。基於結果選擇一個類 – Scott