我的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作为我的技术。
答案 0 :(得分:9)
你所拥有的是一系列物体。因此,您必须遍历数组并从每个对象中删除必要的数据,例如
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"));
}
答案 1 :(得分:2)
当你想直接使用json结构时,这在android中很有用。
请注意,我只在处理数组中的JSONObject时才使用它。
public static JSONArray remove(final int idx, final JSONArray from) {
final List<JSONObject> objs = asList(from);
objs.remove(idx);
final JSONArray ja = new JSONArray();
for (final JSONObject obj : objs) {
ja.put(obj);
}
return ja;
}
public static List<JSONObject> asList(final JSONArray ja) {
final int len = ja.length();
final ArrayList<JSONObject> result = new ArrayList<JSONObject>(len);
for (int i = 0; i < len; i++) {
final JSONObject obj = ja.optJSONObject(i);
if (obj != null) {
result.add(obj);
}
}
return result;
}
答案 2 :(得分:1)
以下方法将在array
中找到匹配id
的对象,然后返回已过滤的数组。
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;
}