使用不同的关键字将JSON映射到Java对象

时间:2014-03-05 16:38:05

标签: java android json gson

我的公司有一个网络服务器API,以JSON格式提供搜索结果。我负责开发一个使用该API的Android应用程序,并且我已经制作了一些类来对JSON响应中的对象进行建模。

为了习惯和我自己的偏好,我只用英文写代码。但是,大多数JSON密钥不是英文的。这样,我就不能轻易使用GSON将JSON字符串转换为Java对象 - 至少这是我的想法。

我想知道是否有任何方法每个类只引用一次JSON密钥与代码中对应的实例变量之间的连接。在引用之后,我可以简单地从JSON实例化对象并从对象创建JSON字符串。

这可能吗?

示例:

// Java code
class Model {
    String name;
    Integer age;
}

// JSON with keys in Portuguese
{
    "nome" : "Mark M.",      # Key "nome" matches variable "name"
    "idade" : 30             # Key "idade" matches variable "age"
}

1 个答案:

答案 0 :(得分:3)

使用@SerializedName注释。

以下是如何使用此注释的示例:

 public class SomeClassWithFields {
   @SerializedName("name") private final String someField;
   private final String someOtherField;

   public SomeClassWithFields(String a, String b) {
     this.someField = a;
     this.someOtherField = b;
   }
 }

以下显示序列化上述示例类的实例时生成的输出:

 SomeClassWithFields objectToSerialize = new SomeClassWithFields("a", "b");
 Gson gson = new Gson();
 String jsonRepresentation = gson.toJson(objectToSerialize);
 System.out.println(jsonRepresentation);

=====输出=====

 {"name":"a","someOtherField":"b"}

来源:SerializedName Javadocs