Gson预计STRING但是BEGIN_ARRAY?

Stu*_*ack 2 java json gson

我正在尝试解析像这样的JSON字符串(Json字符串是从在线API获得的)

[
 [
  [
   {
    "id": 0, 
    "number": 22,
    "arg": []
   }, 
   {
    "id": 1, 
    "number": 1, 
    "arg": [
     {
      "id": 0, 
      "type": "A0", 
      "beg": 0, 
     }, 
     {
      "id": 1, 
      "type": "A1", 
      "beg": 2, 
     }
    ]
   }   
  ]
 ]
]
Run Code Online (Sandbox Code Playgroud)

我正在使用Gson库for java.我的工作是获取"数字"属性的值.要做到这一点,我想我需要这样做:

jsonobject = something(???)
number = jsonobject[0][0][1]["number"]
Run Code Online (Sandbox Code Playgroud)

所以我尝试:

Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonArray jArray = parser.parse(jstring).getAsJsonArray();
for(JsonElement obj : jArray )
{

String cse = gson.fromJson( obj , String.class);
System.out.println(cse);
}
Run Code Online (Sandbox Code Playgroud)

但是,java抱怨:预期的STRING但是BEGIN_ARRAY,从这一行开始:

String cse = gson.fromJson( obj , String.class);
Run Code Online (Sandbox Code Playgroud)

任何想法?提前致谢.

Bra*_*raj 5

它回来了ArrayList<ArrayList<ArrayList<Map<String, Object>>>>.

Type type = new TypeToken<ArrayList<ArrayList<ArrayList<Map<String, Object>>>>>() {}.getType();
ArrayList<ArrayList<ArrayList<Map<String, Object>>>> data = gson.fromJson(json, type);
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(data));
Run Code Online (Sandbox Code Playgroud)

或者您也可以转换为JAVA对象

class MyJSONObj{
    private double id;
    private double number;
    private List<MyArgJson> arg;
    // getter & setter
}

class MyArgJson{
    private double id;
    private String type;
    private double beg;
    // getter & setter
}

Type type = new TypeToken<ArrayList<ArrayList<ArrayList<MyJSONObj>>>>() {}.getType();
ArrayList<ArrayList<ArrayList<MyJSONObj>>> data = gson.fromJson(json, type);
System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(data));
Run Code Online (Sandbox Code Playgroud)

输出:

[
  [
    [
      {
        "id": 0.0,
        "number": 22.0,
        "arg": []
      },
      {
        "id": 1.0,
        "number": 1.0,
        "arg": [
          {
            "id": 0.0,
            "type": "A0",
            "beg": 0.0
          },
          {
            "id": 1.0,
            "type": "A1",
            "beg": 2.0
          }
        ]
      }
    ]
  ]
]
Run Code Online (Sandbox Code Playgroud)