2016-07-28 43 views
2

我有具有类似于此的结构返回数据的API:改造2序列化JSON结果与动态密钥

{ 
    "1": { 
     "url":"http://www.test.com", 
     "count":2 
    }, 
    "3": { 
     "url":"http://www.test.com", 
     "count":12 
    }, 
    "16": { 
     "url":"http://www.test.com", 
     "count":42 
    } 
} 

的名称是的ID。它会不时变化,所以我不知道钥匙。

那我该如何序列化呢?

回答

1

我认为你必须使用一个转换器(GSON转换器或杰克逊转换器)并用TypeAdapter解析JSON答案。

private static final Gson GSON = new GsonBuilder() 
      .registerTypeAdapter(ApiEntity.class, new ApiEntityAdapter()) 
      .create(); 

private static final Retrofit RETROFIT = new Retrofit.Builder() 
      ... 
      .addConverterFactory(GsonConverterFactory.create(GSON)) 
      .build(); 

关于TypeAdapter您可以阅读here

但如果你可以改变API的答案,这将是更好的为您打造这样

[ {"id":1, "url":"http://www.test.com", "count":2}, 
    {"id":3, "url":"http://www.test.com", "count":12}, 
...] 
1

改造的结构能连载这种结构到地图。

public final Map<String, MyDataStructure> items; 

在你的情况,这将产生图的尺寸3的含有以下

"1" -> { "url":"http://www.test.com", "count":2 } 
"3" -> { "url":"http://www.test.com", "count":12 } 
"16" -> { "url":"http://www.test.com", "count":42 }