2013-10-19 31 views
0

我解析使用GSON一個ArrayList,這給了我不能使用JSON對象,意外的標記(逗號)

[["1","user","test"],["2","another","test",["3","fucker","test"]] 

我不能JSON解析它,這樣我可以通過它循環一樣

for(i < 0; i < obj.length; i++) { 
    console.log("some sentence" + obj[i][0] + " etc etc") 
} 

它讓我給出該數組的字符的總長度。

+0

對不起,我沒有完全得到這個問題,如果你使用'Gson'來序列化'ArrayList'爲什麼你不使用'Gson'來反序列化它呢? – 4gus71n

回答

1

JSON結構格式不正確。一個「]」在我想第二個數組後失蹤。修正後,它會是這樣......

[ 
    [ 
    "1", 
    "user", 
    "test" 
    ], 
    [ 
    "2", 
    "another", 
    "test" 
    ], 
    [ 
    "3", 
    "fucker", 
    "test" 
    ] 
] 

編輯:

可能是你的解析方法是不正確的。你的字符串是JSONArray,其中有另外3個JSONArray。因此,解析應該是這樣的

String str = "your json string above" ; 

try { 
    JSONArray array = new JSONArray(str); 
    for(int i = 0 ; i < array.length() ; i++){ 
    JSONArray nestedArray = array.getJSONArray(i); 
     for(int j = 0 ; j < nestedArray.length() ; j++){ 
     System.out.println("" + nestedArray.getString(j) + "\n"); 
     } 
    }  
} catch (JSONException e) { 
    // TODO Auto-generated catch block 
e.printStackTrace(); 
} 
0

爲了解析您的JSON字符串(更正添加缺失]),你可以做這樣的事情:

String json = "[[\"1\",\"user\",\"test\"],[\"2\",\"another\",\"test\"],[\"3\",\"f**er\",\"test\"]]"; 

Type listType = new TypeToken<ArrayList<ArrayList<Object>>>(){}.getType(); 
ArrayList<ArrayList<Object>> list = new Gson().fromJson(json, listType); 
for(List innerList : list) 
    for(Object o : innerList){ 
     System.out.println(o); 

這會給你一個簡單的數據結構,將輕鬆滿足您的需求。