如何使用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.JSONObject
和org.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; }
以下方法将在具有匹配id
的array
找到该对象,然后返回已过滤的数组。
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; }