2016-07-28 80 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 }