无密钥解析JSON

时间:2016-09-29 08:01:24

标签: android json

我的基本JSON数据结构如下:

[
  {
    "data1":"contents of data1",
    "data2":"contents of data 2"
  },
  {
    "data1":"contents of data1",
    "data2":"contents of data 2"
  }
]

我尝试使用JSONArray myJson = new JSONArray(json);

但它给了我:

  

org.json.JSONException:不是原始数组:class org.json.JSONObject

我正在通过以下方式检索JSON:

JSONParser jParser = new JSONParser();

// Getting JSON from URL
JSONObject json = jParser.getJSONFromUrl(url);

使用JSONArray myJson = new JSONArray(json);

将其转换为JSONArray

谢谢!

3 个答案:

答案 0 :(得分:1)

在没有键的情况下迭代你的json,如下所示

try {
    JSONArray jsonArray = new JSONArray("[{\"data1\":\"contents of data1\",\"data2\":\"contents of data 2\"},{\"data1\":\"contents of data1\",\"data2\":\"contents of data 2\"}]");

    for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject jsonObject = jsonArray.getJSONObject(i);

        Iterator<?> keys = jsonObject.keys();

        while (keys.hasNext()) {
            String key = (String) keys.next();
            System.out.println("Mykey: " + key + " value: " + jsonObject.getString(key));    
        }
    }

} catch (JSONException e) {
    e.printStackTrace();
}

答案 1 :(得分:0)

该错误的原因可能是无效的json。

这就是你的data2键 - 值对

的方式
"data2":contents of data 2"

内容之前加上引号并使用此

"data2":"contents of data 2"

更改此错误的所有出现,它应该有效。如果它改变了你的任何内容,请告诉我。

答案 2 :(得分:0)

在python中,如果你有json数据

数据 = [{      “data1”:“data1的内容”,      “data2”:“数据内容2”    },    {      “data1”:“data1的内容”,      “data2”:“数据内容2”    } ]

您可以使用以下方式访问它: 打印“data1:”,数据[0] [“data1”]