如何使用GSON将单个JSON字段映射到多个JAVA字段?

如何使用GSON将单个JSON字段映射到多个JAVA字段?,java,android,json,gson,retrofit,Java,Android,Json,Gson,Retrofit,我试图使用改型和Gson解析JSON,但我需要映射一个JSONfield 的值转换为bean类中的多个JAVA字段 下面是一个示例代码: class A{ @SerializedName("name"); private String name; @SerializedName("name"); private String fullName; } 这就是我看到的错误:类A声明了多个名为name的JSON字段。有没有办法做到这一点 更新:请避免建议从bean中删除一个字段或更改gette

我试图使用改型和Gson解析JSON,但我需要映射一个JSONfield 的值转换为bean类中的多个JAVA字段

下面是一个示例代码:

class A{

@SerializedName("name");
private String name;

@SerializedName("name");
private String fullName;

}
这就是我看到的错误:类A声明了多个名为name的JSON字段。有没有办法做到这一点


更新:请避免建议从bean中删除一个字段或更改getter和setter。这个项目是巨大的,而且这个领域后来在许多其他情况下被使用,所以我不想弄乱这个结构。这个问题非常清楚而且切中要害。

不需要为fullname声明JSON,在setter gatter中使用fullname-name-value

class A{

        @SerializedName("name");
        private String name;

        private String fullName;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getFullName() {
            return name;
        }

        public void setFullName(String fullName) {
            this.name = fullName;
        }
    }

您可以提供json响应示例吗?您可以通过自定义gson反序列化程序实现这一点:但您的问题听起来很奇怪。我想还有其他方法可以满足您的需要,而不是将一个json字段映射到多个java字段。可能是这样的:`@SerializedName(“name”)私有字符串名;public String getName(){return name;}public String getFullName(){return name}`或者如果您需要单独的setter,那么您可以使用类似于:`public String getFullName(){return TextUtils.isEmpty(fullName)?name:fullName;}`这样的设置没有意义。。。如果要存储相同的值,只需删除fullName即可there@VishalSanghani您可以假设JSON是这样的:{“name”:“foo”}有一天,一些卑鄙的程序员会试图猜测为什么他刚设置了全名时,名称就发生了变化。。。setFullName应该只设置fullName…@Selvin我刚刚向他展示了如何用相同的插入实现两个变量。你不应该评判它。你为什么对这个答案投反对票?是否存在漏洞、错误或程序错误。您不应对此进行判断。为什么?setter应该是setter。。。如果咖啡机上的按钮是“加牛奶的咖啡”,但当你按下它时,咖啡机会供应热的发动机机油呢。。。这也不是问题的答案,即:如何使用GSON将单个JSON字段映射到多个JAVA字段?是的,我在代码“无需在setter gatter中声明JSON for fullname use name value with fullname”之前已经提到过这一点。@ReadyAndroid我不能。如果我声明了两个字段,显然是有原因的。该字段用于许多其他情况,并在以后进行修改。我只是希望它的值最初和其他字段相同。