【问题标题】:Java how to remove strings from JSONArrayJava如何从JSONArray中删除字符串
【发布时间】:2014-01-08 00:41:04
【问题描述】:
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,如何删除它们而不留空隙?

【问题讨论】:

  • JSONArray 您使用的是哪个 API?
  • iam 使用此导入 org.json.JSONArray;
  • 我们已经有解决方案stackoverflow.com/questions/18497162/…的链接
  • @KarthikeyanSukkoor 您指出的链接适用于 javascript。这个问题是关于 Java 的,并在 java.util 中被标记。 java中JsonArray中没有splice()。

标签: java


【解决方案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);
    }
}

【讨论】:

    【解决方案2】:

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

     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]
    

    【讨论】:

      【解决方案3】:

      您可以使用以下代码

      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
      }
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 请注意,带有 getString() 的版本将不起作用,因为第一个元素不是字符串...
        【解决方案5】:

        看看this post。 制作一个列表以放置带有“空”字符串的元素的索引并遍历您的列表(带有“空”元素的列表)保存要删除的项目的索引。之后,遍历之前保存的索引并使用

        list.remove(position);
        

        其中位置获取要删除的每个项目的值(在索引列表中)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-10-30
          • 2015-10-30
          • 2017-05-21
          • 2015-05-13
          • 1970-01-01
          • 2015-02-19
          • 1970-01-01
          • 2011-08-07
          相关资源
          最近更新 更多