java - Gson - 用两个不同的键读取一个值

标签 java android android-studio gson android-json

在我的 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/nameaddress/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/

相关文章:

Java顺序解压GZIP流

java - 我可以使用 Headless JS 调用类中的函数吗? React-Native 安卓

android - 命令 "Fix Project Properties"究竟做了什么?

android - 更改 build.gradle 后的 "Method references in a .dex file cannot exceed 64K"

android-studio - 多个 Android Studio 锁定与 Apple M1 芯片

java - 如何为多个列表创建一个条件,仅显示具有相同值的数组

java - 可以看到用java发送一个数据包花了多长时间

java - 如何延迟 bean,直到所有 spring 云连接器扫描完成?

Android 简单登录屏幕在登录时崩溃应用程序,在 eclipse 中没有错误。哪个java类 Activity 有问题?

android - 如何在 Firebase 的评级栏中显示评级?