我正在使用Retrofit进行一些api调用。对于特定端点,返回的json看起来有点像这样:
端点:api.example.com/1.0/userinfo?userid=7
返回的响应看起来有点像这样:
{
"7":{
"name":"george",
"age"="32"
}
}
基本上,顶级对象是传递给url参数的任何数字(在此示例中为7)。
因此,在创建我的Java对象以对此响应进行建模时,如何对此顶级对象进行建模,以便即使名称发生更改,它也会在使用gson时正确映射?
答案 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);`