改造,顶级json对象改变?

时间:2016-04-27 02:01:07

标签: android json gson retrofit retrofit2

我正在使用Retrofit进行一些api调用。对于特定端点,返回的json看起来有点像这样:

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

返回的响应看起来有点像这样:

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

} 

基本上,顶级对象是传递给url参数的任何数字(在此示例中为7)。

因此,在创建我的Java对象以对此响应进行建模时,如何对此顶级对象进行建模,以便即使名称发生更改,它也会在使用gson时正确映射?

1 个答案:

答案 0 :(得分:1)

接口:

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

用途:

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

“7”是userid =?

接口:

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

用途:

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);`