不能使用json对象,意外令牌(逗号)

时间:2013-10-19 02:53:23

标签: java gson

我用GSON解析了一个arraylist,这给了我

[["1","user","test"],["2","another","test",["3","last one","test"]]

我不能JSON解析它以便我可以像

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

它让我给出该数组字符的总长度。

2 个答案:

答案 0 :(得分:1)

JSON结构格式错误。我认为在第二个数组之后缺少“]”。经过修正后,它就像这样......

[
  [
    "1", 
    "user", 
    "test"
  ], 
  [
    "2", 
    "another", 
    "test"
  ], 
  [
    "3", 
    "last one", 
    "test"
  ]
]

编辑:

可能你的解析方法不正确。你的String是JSONArray,其中有另外3个JSONArrays。所以,解析应该是这样的

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();
}

答案 1 :(得分: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);

这将为您提供一个简单的数据结构,可以轻松满足您的需求。