从json响应Android中删除对象

时间:2015-07-21 08:43:49

标签: java android json

大家好,我需要你的帮助。如何从我的json响应中删除它?

[
  {
    "Woa": [
        "Seo",
        "Rikjeo",
        "JDa"
    ]
  },
"Aha",
"Aad",
"Char"
]

我想删除它:

{
    "Woa": [
        "Seo",
        "Rikjeo",
        "JDa"
    ]
  }

这是我到目前为止所尝试的:

for (int i = 0; i < array.length(); ++i) {
    list.add(array.getString(i));
}

list.remove(0);

但它仍然没有删除。我怎么做?任何想法将不胜感激

编辑list.remove(1)到(0)

6 个答案:

答案 0 :(得分:1)

删除项目后,您需要使用列表再次创建JSON。

list.remove(1);

JSONArray jsArray = new JSONArray(list);

如果要将JSONArray转换为JSON字符串:

jsArray.toString()

答案 1 :(得分:0)

  

您的列表将被更新,而不是您的JSON对象。

为什么不使用JSONparser

JSONObject obj = new JSONObject(mystring);
obj.remove("entryname");

答案 2 :(得分:0)

你应该做一些更通用的东西,这样你就不必在JSON改变的时候修改你的代码。例如:

        //here we create the JSONArray object from the string that contains the json data
        JSONArray array = new JSONArray(myJsonString);

        //here we create a list that represents the final result - a list of Strings
        List<String> list = new ArrayList<>();

        //here we parse every object that the JSONArray contains
        for (int i = 0; i < array.length(); i++) {

            //if the current item is an JSONObject, then we don't need it, so we continue our iteration 
            //this check is not necessary because of the below check, 
            //but it helps you see things clearly: we IGNORE JSONObjects from the array
            if (array.get(i) instanceof JSONObject) {
                continue;
            }

            //if our current object is a String, we add it to our final result
            if (array.get(i) instanceof String) {
                list.add(array.getString(i));
            }
        }

答案 3 :(得分:0)

一个问题是您尝试删除的元素是第一个元素,而JSONArray对象的第一个元素的索引是零。

您正在调用list.remove(1),删除数组的第二个元素。

以下就足够了:

list.remove(0);

......没有之前的东西。

如果这不起作用,那么我的猜测是你要删除元素太晚了;即 之后JSONArray对象已被序列化。但是,我们需要查看更多(相关)代码。

JSONArray的Android文档未提及数组索引从零开始。但是,确实如此。我检查了源代码。此外,大多数其他Java数据结构(数组,列表等)使用从零开始的索引。 (一个值得注意的例外是在W3C DOM API上建模的Java数据结构。)

答案 4 :(得分:0)

你可以将你的字符串解析为JSONArray,数组的第一个元素就是你想要的。

@Test
public void test() {
    String str = "[  {\"Woa\": [\"Seo\",\"Rikjeo\",\"JDa\"]},\"Aha\",\"Aad\",\"Char\"]";
    try {
    JSONArray array;
        array = new JSONArray(str);
        System.out.println(array);
        System.out.println(array.get(0));
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
  

[{ “吁”:[ “徐”, “Rikjeo”, “JDA”]}, “啊”, “阿德”, “字符”]

     

{ “吁”:[ “徐”, “Rikjeo”, “JDA”]}

     

通过:测试

答案 5 :(得分:0)

您可以逐个删除

 while (user_data.length() > 0) {
  user_data.remove(user_data.keys().next());
 }