Как удалить элемент JSONArray с помощью Java - PullRequest
5 голосов
/ 05 января 2012

Мой 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, флажок,

Я пытался использовать jsonArray.remove(1), а также jsonArray.discard("Id") в JAVA. но ничего не происходит что я делаю не так, чтобы удалить элементы массива?

Я использую JAVA в качестве своей технологии.

Ответы [ 3 ]

9 голосов
/ 05 января 2012

То, что у вас есть, это массив объектов. Поэтому вам придется пройти через массив и удалить необходимые данные из каждого объекта, например,

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"));
}
2 голосов
/ 21 сентября 2012

Это полезно иногда в Android, когда вы хотите напрямую использовать структуру json.

Обратите внимание, что я использую это только при обработке 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;
}
1 голос
/ 08 ноября 2017

Следующий метод найдет объект в 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...