我目前是Json的新人,遇到了问题。我搜索了很多,但找不到答案!
我从json网址获取名单。名称可以在这个json文件中复制,但我只想将它们的一条记录保存到我的新数组中,我称之为#34; arr"。您可以看到以下代码:
JSONArray interests = json.getJSONArray("Interests");
JSONArray arr = new JSONArray();
int i = 0;
int p = 0;
int e = 0;
for (; i < interests.length(); i++) {
JSONArray items = interests.getJSONObject(i).getJSONArray("items");
for (int j = 0; j < items.length(); j++) {
String string = items.getJSONObject(j).getString("authors");
String[] parts = string.split(",");
for (int k = parts.length - 1; k >= 0; k--) {
for (int a = 0; a <= arr.length(); a++) {
if (arr.length() == 0 || !arr.getJSONObject(a).getString("label").equals(parts[k])) {
JSONObject obj = new JSONObject();
obj.put("id", p++);
// obj.put("value", e++);
obj.put("label", parts[k]);
arr.put(obj);
}
}
}
}
}
System.out.print(arr);
}
问题是当我运行此代码时出现以下错误:
线程中的异常&#34; main&#34; org.json.JSONException:找不到JSONArray [1]。
我尝试在每次迭代中打印arr.length(),然后我得到1!但我真的不知道为什么我会收到这个错误?!
提前致谢
答案 0 :(得分:0)
指数转移的常见错误。以下示例:
Array[0] = "foo";
Array[1] = "bar";
for(int i=0; i <= Array.length(); i++)
doSomesing(Array[i]);
Array.length()将返回2,但索引范围是0到1,所以正确的将是
for(int i=0; i < Array.lenth(); i++)