2016-04-27 4 views
2

Я использую Retrofit, чтобы сделать несколько вызовов api. Для конкретной конечной точки, возвращаемый JSON выглядит немного как это:Модернизация, изменение объекта json на верхнем уровне?

Endpoint: api.example.com/1.0/userinfo?userid=7

Возвращенный ответ выглядит как это:

{ 
    "7":{ 
     "name":"george", 
     "age"="32" 
     } 

} 

В основном, объект верхнего уровня независимо от числа передается в параметр url (в этом примере 7).

Итак, при создании объектов Java для моделирования этого ответа, как мне смоделировать этот объект верхнего уровня, чтобы даже если имя изменилось, оно правильно отобразилось при использовании gson?

ответ

1

Интерфейс:

@Get 
Call<Map<String,User>> getUserInfo(@Url String url); 

Usages:

Map<String,User> response =getUserInfo("http://api.example.com/1.0/userinfo?userid=7"); 
User user = response.get("7"); 

"7" является Идентификатор_пользователя =?

Интерфейс:

@Get("1.0/userinfo") 
Call<Map<String,User>> getUserInfo(@Query("userid")String userid); 

Usages:

String userId = "7"; 
Map<String,User> response = Retrofit.Builder().baseUrl("http://api.example.com").create(ApiService.class).getUserInfo(userId).execute(); 
User user = response.get(userId);` 
+0

Я не уверен, что я следую. Почему вы используете «карту»? Я использовал Retrofit дюжину раз раньше, но обычно json структурирован так, что ключевой элемент верхнего уровня будет таким же. Итак, например: объект верхнего уровня будет похож на '' userinfo ": {" id ": 88}", и я бы создал класс модели для userinfo с переменной id. Но так как в этом случае объект верхнего уровня изменяется, как мне его моделировать? – Orbit

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