2016-01-22 30 views
1

我想通過GSON庫將Json字符串轉換爲List。我不能將json字符串轉換爲GSON列表<T>

public <T> List<T> getModelList(String jsonStr, Class<T> type) { 
     Type listType = new TypeToken<ArrayList<T>>(){}.getType(); 
     List<T> yourClassList = new Gson().fromJson(jsonStr, listType); 
     return yourClassList; 
    } 

,我叫

List<CallDetail> callDetails = Converter.me().getModelList(responseMessage.getResult(), CallDetail.class); 

但我得到的名單與com.google.gson.internal.LinkedTreeMap對象,但我需要List<CallDetail>

JSON字符串片段

"result": "[{\"servedimei\":\"3579330679481801\",\"тип сетевого события\":\"Исходящий голос\",\"время начала события\":\"2016-01-01 19:33:10.0\" 

POJO

public class CallDetail { 

    private String servedimei; 
    @SerializedName("тип сетевого события") 
    private String type; 
    @SerializedName("время начала события") 
    private String starttime; 
    @SerializedName("вызывающий абонент") 
    private String src; 
    @SerializedName("вызываемый абонент") 
    private String dest; 
    @SerializedName("длительность") 
    private String duration; 
    @SerializedName("базовая станция") 
    private String bs; 
    private String lac; 
    private String ci; 
+0

能否請您發送任何樣品JSON字符串? –

+0

JSON字符串是正常的,但現在我添加它和我的POJO – user5620472

回答

0

從日誌中非常簡單。 JSON字符串包含result字段,其​​中包含array,GSON將其視爲Map。你需要一個班來獲得所需的結果。

class CallDetailResult { 
     List<CallDetail> result; 
     // getter and setter 
} 

// how to use GSON here to get the desired result 
CallDetailResult result = new Gson().fromJson(jsonStr, CallDetailResult.class); 
List<CallDetail> list = result.getResult(); 

更多的www.json.org

enter image description here

enter image description here

+0

我來自解決方案http://stackoverflow.com/a/28805158/5620472 – user5620472

+0

你的JSON字符串不是以表示數組的[[...]''開始。你只需要傳遞'result'字段的字符串。 – Braj