Java如何从JSONArray中删除字符串

时间:2013-12-19 12:27:59

标签: java

JSONArray jsonArray = new JSONArray();

jsonArray.put(1);
jsonArray.put("empty");
jsonArray.put(2);
jsonArray.put(3);
jsonArray.put("empty");
jsonArray.put(4);
jsonArray.put("empty");

假设我们有这个jsonArray,有字符串empty,如何删除它们而不留空隙?

5 个答案:

答案 0 :(得分:1)

您可以使用以下代码:

for (int i = 0, len = jsonArray.length(); i < len; i++) {
    JSONObject obj = jsonArray.getJSONObject(i);
    String val = jsonArray.getJSONObject(i).getString();
    if (val.equals("empty")) {            
        jsonArray.remove(i);
    }
}

答案 1 :(得分:0)

您可以使用以下代码

JSONArray list = new JSONArray();     
JSONArray jsonArray = new JSONArray(jsonstring); 
int len = jsonArray.length();
if (jsonArray != null) { 
   for (int i=0;i<len;i++)
   { 
       //Excluding the item string equal to "empty"
        if (!"empty".equals(jsonArray.getString(i)) 
        {
            list.put(jsonArray.get(i));
        }
   } 
 //Now, list JSONArray has no empty string values
}

答案 2 :(得分:0)

看看this post。 创建一个列表,将元素的索引放在“空”字符串中,并遍历列表(带有“空”元素的列表),保存要删除的项的索引。之后,迭代预先保存的索引并使用

list.remove(position);

其中position将每个项的值设为delente(在索引列表中)。

答案 3 :(得分:0)

应该对Keerthi的代码进行一些修复:

for (int i = 0; i < jsonArray.length(); i++) {
    if (jsonArray.get(i).equals("empty")) {
        jsonArray.remove(i);
    }
}

答案 4 :(得分:0)

将数组转换为字符串后,可以使用字符串替换,

 JSONArray jsonArray = new JSONArray();
 jsonArray.put(1);
 jsonArray.put("empty");
 jsonArray.put(2);
 jsonArray.put(3);
 jsonArray.put("empty");
 jsonArray.put(4);
 jsonArray.put("empty");
 System.err.println(jsonArray);
 String jsonString = jsonArray.toString();
 String replacedString = jsonString.replaceAll("\"empty\",", "").replaceAll("\"empty\"", "");
 jsonArray = new JSONArray(replacedString);
 System.out.println(jsonArray);

替换前:

jsonArray is [1,"empty",2,3,"empty",4,"empty"]

替换后:

jsonArray is [1,2,3,4]