如何从json数组中的数组中获取json字符串

时间:2015-11-19 09:40:40

标签: android json

初始JSON

{
  "data": [
    {
      "request": [
        [
          {
            "name": "John""email": "John@gmail.com"
          }
        ],
        [
          "name": "William""email": "William@gmail.com"
        ]
      ]
    }
  ]
}

更正了JSON,因为它没有通过JSONLint

{
  "data": [
    {
      "request": [
        {
          "name": "John",
          "email": "John@gmail.com"
        },
        {
          "name": "William",
          "email": "William@gmail.com"
        }
      ]
    }
  ]
}

如何在JSON数组中提取JSON数组。我收到错误消息

  

json数组无法转换为JSON对象。

3 个答案:

答案 0 :(得分:1)

以下代码将有助于解析您的Json:

try {

            JSONObject jsonData = new JSONObject(jsonObject);
            JSONArray dataJsonArray = jsonData.getJSONArray("data");
            JSONArray jsonRequest = dataJsonArray.getJSONObject(0)
                    .getJSONArray("request");
            JSONArray mRequestChildJson = jsonRequest.getJSONArray(0);
            JSONObject innerJson = mRequestChildJson.getJSONObject(0);
            LogHandler.e("TAG",
                    "mRequestChildJson" + innerJson.toString());

        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

请勿忘记添加具有密钥和数组大小的检查。

答案 1 :(得分:0)

可能是你在正确的轨道上但是把它放在对象中

JSONArray JArray = jObject.getJSONArray("data");

答案 2 :(得分:0)

    try {
                String str = result.toString();

                System.out.println("prov-request -->"+str);

                JSONObject json=new JSONObject(str);
                JSONArray jsonarray = json.getJSONArray("data");

                for(int i=0;i<jsonarray.length();i++){

                    JSONObject jsonnew=jsonarray.getJSONObject(i);
                    JSONArray jsonarrayROW = jsonnew.getJSONArray("request");
for(int j=0;j<jsonarrayROW.length();j++){
                            JSONObject jsonObject=jsonarrayROW.getJSONObject(j);

                            date.add(jsonObject.getString("name"));
                            from.add(jsonObject.getString("email"));

                }

            } catch (JSONException e) {

                e.printStackTrace();
            }