2014-03-05 140 views
1

我的公司有一個webserver API,以JSON格式提供搜索結果。我負責開發一個使用該API的Android應用程序,並且我已經制作了一些模擬JSON響應中的對象的類。將JSON映射到具有不同關鍵字的Java對象

爲了習慣和我自己的喜好,我只用英文寫我的代碼。但是,大多數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" 
} 

回答

2

使用@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); 

===== OUTPUT =====

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

來源:SerializedName Javadocs

+0

這似乎正是我需要的。 – Guilherme