我正在开发一个项目,我必须清除JSON数组中的所有数据。似乎没有像 jsonArray.clear()这样的方法。还试过 jsonArray = new JSONArray()。那也没效果。建议请
答案 0 :(得分:8)
只需创建一个新的JSONArray。
JSONArray otherJsonArray = new JSONArray();
或遍历数组并remove(int index)
索引。
http://www.json.org/javadoc/org/json/JSONArray.html#remove(int)
答案 1 :(得分:3)
只需添加jsonArray = new JSONArray()
答案 2 :(得分:2)
创建一个新的将起作用,除非您已将其作为参数传递给方法,在这种情况下,您需要修改引用的对象,因为调用方法将无法看到新引用。
所以如果是这样的话,那就倒退吧,这样你就不会让你的迭代器超出界限:
int startingLength = someJsonArray.length();
for (int i = startingLength - 1; i >= 0; i--) {
someJsonArray.remove(i);
}
答案 3 :(得分:1)
你使用它 otherJsonArray已经存在,然后你使用
JSONArray otherJsonArray = new JSONArray("[]");
答案 4 :(得分:0)
我们可以使用someJsonArray.pop(index)来删除require记录。 我们可以在循环中使用此代码来删除所有记录。
答案 5 :(得分:0)
我有一种情况,我想从带有键“Constants”的 JSONArray 中删除所有条目,它是 JSONObject 中的一个元素,创建一个新的 JSONArray 并分配它不会清除 JSONArray,我必须遍历JSONArray 和 jsonArray.remove(i) 在他们每个人上,但是有第二种方法可以工作,它涉及从 JSONObject 中完全删除数组元素,在这种情况下是“常量”,并将其重新添加为新的 JSONArray。< /p>
这里是分配新数组的代码,这不起作用,JSONArray 保持不变:(我尝试了上述 new JSONArray(); 和 new JSONArray("[]");
JSONObject jsonObj = new JSONObject(metadataOriginalJSON);
if (jsonObj.isJSONArray("Constants")) {
JSONArray constantsArray = jsonObj.getJSONArray("Constants");
constantsArray = new JSONArray();
metadataConstantsRemoved = jsonObj.toString();
}
这是通过 JSONArray 进行迭代的代码,该代码有效:
JSONObject jsonObj = new JSONObject(metadataOriginalJSON);
if (jsonObj.isJSONArray("Constants")) {
JSONArray constantsArray = jsonObj.getJSONArray("Constants");
int i = 0;
int arrayLenSanityCheckPreventEndlessLoop = constantsArray.length();
while (constantsArray.length() > 0 && i < arrayLenSanityCheckPreventEndlessLoop) {
constantsArray.remove(0);
i++;
}
metadataConstantsRemoved = jsonObj.toString();
}
第二种方法是删除整个 JSONArray 元素并将其重新添加到 JSONObject:
JSONObject jsonObj = new JSONObject(metadataOriginalJSON);
if (jsonObj.isJSONArray("Constants")) {
jsonObj.remove("Constants");
jsonObj.put("Constants", new JSONArray());
metadataConstantsRemoved = jsonObj.toString();
}