在我的 Android 项目中,我有两种类型的响应,其中两种 响应都是相同的,除了两个键。
响应 1
{"fullName":"William Sherlock Scott Holmes","address":"221B Baker Street, London, England, UK","downloads":642,"rating":3,"repos":["https://link1","https://link2","https://link3"]}
响应 2
{"name":"Sherlock","city":"London","downloads":642,"rating":3,"repos":["https://link1","https://link2","https://link3"]}
如果您看到响应,则只有两个键名在更改 fullName/name 和 address/city
我不想再为其他响应创建一个 pojo。我的问题是:是否可以只使用一个 Pojo 来读取两个响应?
public class AccountInfo {
private String name;
private String city;
//other objects
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
//other setters and getters
}
任何帮助将不胜感激......
最佳答案
您可以使用 @SerializedName 注释成员以接受来自两个不同 json 名称的值。注释:
@SerializedName(value = "name", alternate = {"fullName"})
private String name;
@SerializedName(value = "city", alternate = {"address"})
private String city;
然后可以将任一命名元素放入像这样注释的成员中。
更新:
@SerializedName
在 Version 2.4 中添加反序列化时的备用名称
关于java - Gson - 用两个不同的键读取一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35739713/