问题
I am currently new in Json and faced to a problem. I Searched a lot but could not find an answer to it!
I am getting a list of names from a json url. names can be duplicated in this json file but i only want to keep one record of them to my new array which i called "arr". You can see the code as following:
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);
}
Problem is when i run this code I get the following error :
Exception in thread "main" org.json.JSONException: JSONArray[1] not found.
I tried to print arr.length() in each iteration and I get 1!! but I do not really know why i do receive this error?!
Thanks in advance
回答1:
A common fault of index shifting. Following example:
Array[0] = "foo";
Array[1] = "bar";
for(int i=0; i <= Array.length(); i++)
doSomesing(Array[i]);
Array.length() will return 2, but index rage is 0 to 1, so the correct would be
for(int i=0; i < Array.lenth(); i++)
来源:https://stackoverflow.com/questions/28920603/jsonarray-error-org-json-jsonexception-jsonarray1-not-found