如何使用Java删除JSONArray元素

时间:2012-01-05 09:46:02

标签: java json hibernate extjs4

我的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作为我的技术。

3 个答案:

答案 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.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"));
}

答案 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;
}