我正在做一个项目,我必须从 JSON 数组中清除所有数据。似乎没有像jsonArray.clear()这样的方法。还尝试了 jsonArray = new JSONArray()。那也没有奏效。请提出建议
6 回答
只需创建一个新的 JSONArray。
JSONArray otherJsonArray = new JSONArray();
或者遍历数组和remove(int index)
索引。
http://www.json.org/javadoc/org/json/JSONArray.html#remove(int)
就放jsonArray = new JSONArray()
创建一个新的将起作用,除非您将它作为参数传递给方法,在这种情况下,您需要修改引用的对象,因为调用方法不会看到新的引用。
因此,如果是这种情况,请向后执行,这样您的迭代器就不会超出范围:
int startingLength = someJsonArray.length();
for (int i = startingLength - 1; i >= 0; i--) {
someJsonArray.remove(i);
}
你使用 otherJsonArray 已经存在然后你使用
JSONArray otherJsonArray = new JSONArray("[]");
我们可以使用 someJsonArray.pop(index) 来删除需要的记录。我们可以在循环中使用此代码来删除所有记录。
我有一种情况,我想使用键“Constants”从 JSONArray 中删除所有条目,这是 JSONObject 中的一个元素,创建一个新的 JSONArray 并分配它不会清除 JSONArray,我必须遍历 JSONArray 和jsonArray.remove(i),但是还有第二种方法可以工作,它涉及删除数组元素,在这种情况下,从 JSONObject 中完全删除“常量”并将其重新添加为新的 JSONArray。
这是分配了新数组的代码,它不起作用,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();
}