如何使用Java删除JSONArray元素

我的JsonArray是

[{ "Id": null, "Name": "One New task", "StartDate": "2010-02-03T05:30:00", "EndDate": "2010-02-04T05:30:00", "Duration": 1, "DurationUnit": "d", "PercentDone": 0, "ManuallyScheduled": false, "Priority": 1, "parentId": 8, "index": 0, "depth": 3, "checked": null },{ "Id": null, "Name": "New task", "StartDate": "2010-02-04T05:30:00", "EndDate": "2010-02-04T05:30:00", "Duration": 0, "DurationUnit": "d", "PercentDone": 0, "ManuallyScheduled": false, "Priority": 1, "parentId": 8, "index": 1, "depth": 3, "checked": null }] 

现在从这个JsonArray我想删除Id,ManuallyScheduled,checked,

我尝试在JAVA中使用jsonArray.remove(1)jsonArray.discard("Id") 。 但没有任何反应。 删除数组项目我做错了什么?

我使用JAVA作为我的技术。

你有什么是一系列的对象。 因此,您必须遍历数组并从每个对象中删除必要的数据,例如

 for (int i = 0, len = jsonArr.length(); i < len; i++) { JSONObject obj = jsonArr.getJSONObject(i); // Do your removals obj.remove("id"); // etc. } 

我假设你在这里使用org.json.JSONObjectorg.json.JSONArray ,但无论你使用什么JSON处理库,主体都保持不变。

如果你想将[{"id":215},{"id":216}][215,216]你可以这样:

 JSONArray intArr = new JSONArray(); for (int i = 0, len = objArr.length(); i < len; i++) { intArr.put(objArr.getJSONObject(i).getInt("id")); } 

当你想直接使用json结构时,这在android中很有用。

请注意,我只在处理数组中的JSONObject时使用它。

 public static JSONArray remove(final int idx, final JSONArray from) { final List objs = asList(from); objs.remove(idx); final JSONArray ja = new JSONArray(); for (final JSONObject obj : objs) { ja.put(obj); } return ja; } public static List asList(final JSONArray ja) { final int len = ja.length(); final ArrayList result = new ArrayList(len); for (int i = 0; i < len; i++) { final JSONObject obj = ja.optJSONObject(i); if (obj != null) { result.add(obj); } } return result; } 

以下方法将在具有匹配idarray找到该对象,然后返回已过滤的数组。

 public JSONArray removeObject(JSONArray array, String id) throws JSONException { for (int i = 0; i < array.length(); i++) { JSONObject obj = array.getJSONObject(i); if (obj.getString("ID").equals(id)) { array.remove(i); // Toast.makeText(this, "ENCONTRADO", Toast.LENGTH_SHORT).show(); } } return array; }