解析android中的json数组

时间:2014-04-21 15:56:45

标签: java android json

我需要帮助...我有一个php文件,它返回两个json Arrays,如下所示:

[{ "id":"1",
   "item":"hammers",
   "aisle":"20"
 }
 { "id":"1",
   "item":"hammers",
   "aisle":"20"
 }]

[{ "id":"1",
   "itemFound":"Your item #item",
   "ThankYou":"and Thank You for using Txtcore!"
 }]

现在,我想在Android中获取第二个数组项。我现在有以下代码,如:      JSONArray jsonArray = new JSONArray(result);

         for (int   i = 0; i < jsonArray.length(); i++) {
              JSONObject jsonObject = jsonArray.getJSONObject(i);       
            items.add(jsonObject.getString("item"));
            aisles.add(""+jsonObject.getString("item");

         }

但显然,这会返回第一个数组中的对象。我想从第二个数组中获取对象。任何建议。

2 个答案:

答案 0 :(得分:1)

您的JSON无效,但您可以按如下方式获取您的元素。这是许多人的解决方案(只是一个故事)。

String str = "YOUR_JSON_RESPONSE";
String array[] = str.split("\\[\\{");// 
try {
     JSONArray jsonArray=new JSONArray("[{" + array[2]));
} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

答案 1 :(得分:0)

我猜你不得不做一些脏编码,因为PHP页面返回的数据不是很好的JSON。 您可以尝试将JSON数据转换为:     { "data" : [ <array_1>, <array_2> ]}然后使用JSON解析器。使用正则表达式进行简单替换就可以了。

  result.replaceAll("\\]\\s*\\[", "], [");
  StringBuffer buffer=new StringBuffer(result);
  buffer.insert(0,"{ \"data\": ");
  buffer.append(" }");
  JSONObject jsonObject = new JSONObject(buffer.toString());
  JSONArray secondArray= jsonObject.getJSONArray("data").getJSONArray(1);

可以使用适当的正则表达式在一个步骤中创建有效的JSON字符串。希望有更多时间的人可以在这里发布。