从Android中的JSONarray中删除JSONobject

时间:2014-09-24 05:30:18

标签: android json android-layout

我有动态JSON字符串我想从android中的JSONARRAY中删除最后一个JSON对象。这是我在android中的动态JSON字符串。我的json字符串是

  

(" {\" findAllUsersResponse \":" + arguments [0] .toString()+"}");

    {
    "findAllUsersResponse": [
        {
            "id": "kicJw2whXyuGjbNo936L",
            "name": "Fghhjj",
            "udid": "2AA120E3-7478-4AD4-9C68-9C0920669B84"
        },
        {
            "id": "NEF45TWNI6-Uc_r7938R",
            "name": "ssss",
            "udid": "1DD083C2-7F1D-4BB3-9AB9-691A5FD251CC"
        },
        {
            "id": "xuXY7Ah2-O-jL4Zk939D",
            "name": "Test",
            "udid": "A892E0AB-6732-4F42-BEFA-3157315E9EE4"
        },
        {
            "id": "w1FnBz8B9ciWUzBk939k",
            "name": "Aditi",
            "udid": "A892E0AB-6732-4F42-BEFA-3157315E9EE4"
        }

    ]
}

3 个答案:

答案 0 :(得分:1)

遇到了类似的问题。 JSONarray对象中没有方法可以获得您想要的内容。你可以创建一个删除它的功能。在某处看到了这个解决方案。

   public static JSONArray remove(final int index, final JSONArray from) {
    final List<JSONObject> objs = getList(from);
    objs.remove(index);

    final JSONArray jarray = new JSONArray();
    for (final JSONObject obj : objs) {
        jarray.put(obj);
    }

    return jarray;
}

public static List<JSONObject> getList(final JSONArray jarray) {
    final int len = jarray.length();
    final ArrayList<JSONObject> result = new ArrayList<JSONObject>(len);
    for (int i = 0; i < len; i++) {
        final JSONObject obj = jarray.optJSONObject(i);
        if (obj != null) {
            result.add(obj);
        }
    }
    return result;
}

干杯!

答案 1 :(得分:1)

如果您的String不会更改,并且您只想删除最后一个对象,请使用 substring 并创建新字符串。

 String finduserjson=  "{\"findAllUsersResponse\": "+arguments[0].toString()+"}");
    String t = finduserjson.substring(finduserjson.indexOf("{"), finduserjson.lastIndexOf(",{"));
    String j = "]}";
    finduserjson = t+j;

干杯

答案 2 :(得分:0)

如果您使用JSON而不是GSONJACKSON,则无法调用.remove()方法,因为您无法在那里找到它。

您可以做的最好的事情是,重新创建一个新的JSONArray并在其中添加必需的JSONObjects