从Android api级别19中删除JsonObject

时间:2014-12-11 16:42:28

标签: java android json arrays jsonobject

你好,我有一个json

String  prev_string= [
        {
            "mac_address": "D3-D3-D3-D3-D4",
            "minor": "2333",
            "time": "11-12-2014 2:36 PM",
            "major": "4444"
        },
        {
            "mac_address": "D3-D3-D3-D3-D3",
            "minor": "45555",
            "time": "11-12-2014 2:36 PM",
            "major": "2322"
        }
    ]
JSONArray json= new JSONArray(prev_string);
json.remove(1);

我需要删除第二个对象,json.remove(1)工作正常,但在android之前lvl 19不能正常工作。删除,我怎样才能使它工作?

问候!

3 个答案:

答案 0 :(得分:4)

是的,有点令人惊讶的是,直到API 19才添加它。您可以在某个地方定义一个实用程序方法,它迭代源对象,并将所有元素添加到新对象(指定的索引除外)。像这样:

public static JSONArray removeJsonObjectAtJsonArrayIndex(JSONArray source, int index) throws JSONException {
    if (index < 0 || index > source.length() - 1) {
        throw new IndexOutOfBoundsException();
    }

    final JSONArray copy = new JSONArray();
    for (int i = 0, count = source.length(); i < count; i++) {
        if (i != index) copy.put(source.get(i));
    }
    return copy;
}

答案 1 :(得分:1)

你说得对,这是从api 19开始添加的方法。这里没有简单的解决方法。

两个解决方案:

  

使用另一个库来保存Json对象。

     

OR

     

创建一个新的Json数组并逐个添加对象,除了   你要删除的一个。

答案 2 :(得分:0)

在api level 19之前的

,诀窍是解析Collection中的对象,删除你不需要的项,然后使用带有集合的构造函数创建一个新的JSONArray。 Here文档