2014-03-05 3 views
1

У моей компании есть API-интерфейс веб-сервера, который предоставляет результаты поиска в формате JSON. Я отвечаю за разработку приложения для Android, которое использует этот API, и я создал несколько классов, которые моделируют объекты в ответах 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

Смежные вопросы