【发布时间】:2016-11-25 12:58:31
【问题描述】:
我正在尝试使用 Retrofit 和 Gson 解析 JSON,但我需要映射一个 JSONfield 的值到 bean 类中的多个 JAVA 字段。
这是一个示例代码:
class A{
@SerializedName("name");
private String name;
@SerializedName("name");
private String fullName;
}
这是我看到的错误:A 类声明了多个名为 name 的 JSON 字段。有没有办法做到这一点?
更新:请避免建议从 bean 中删除一个字段或更改 getter 和 setter。这个项目很大,而且该字段后来在许多其他情况下都被使用,所以我不想弄乱结构。这个问题很清楚,也很重要。
【问题讨论】:
-
你能提供你的json响应示例
-
您可以使用自定义 gson 反序列化器实现此目的:javacreed.com/gson-deserialiser-example 但您的问题听起来很奇怪。我猜还有其他方法可以做您需要的事情,而不是将一个 json 文件映射到多个 java 字段。可能是这样的:` @SerializedName("name") private String name; public String getName() { 返回名称; } 公共字符串 getFullName() { 返回名称 } `
-
或者如果你想要单独的设置器,那么你可以有类似的东西:` public String getFullName() { return TextUtils.isEmpty(fullName) ?名称:全名; } `
-
这没有意义......如果你想在那里存储相同的值,只需删除 fullName
-
@VishalSanghani 你可以假设 JSON 是这样的:{ "name" : "foo" }
标签: java android json gson retrofit