2016-01-20 82 views
-1
{ "Employee" : 
     [ 
     {"id":"101","name":"Sonoo Jaiswal","salary":"50000"}, 
     {"id":"102","name":"Vimal Jaiswal","salary":"60000"} 
     ] 
    } 

for (int i =0;i< json_array.length(); i++) { 
    json_array.remove(i); 
    } 

我有一个示例JSONArray数据。我想删除一定条件下的整个json数组。 但json_array.remove(position)方法不起作用。有没有其他方法可以删除Android中的整个JSON数组或元素?如何删除Android中的JSON数组元素

+1

“JSONArray卸下摆臂(位置)不工作”你什么意思是“不工作”吗?请发布您正在使用的代码。 –

+0

jsonarray.remove(position)方法不适用于API级别。无论是否弃用jsonarray或其他方式。 – rajeshlawrance

+1

“无法在API级别工作”您是指“不工作”和“API级别”中的含义?请发布您正在使用的代码。 –

回答

0

如果你通过索引向前迭代数组,删除元素,你将会在你刚删除的元素后总是会错过元素。

想一想阵列[A, B, C]

for (int i = 0; i < arr.length; ++i) { 
    arr.remove(i); 
} 
  • 在第一次迭代,i == 0,所以arr.remove(i)将删除A;阵列现在是[B, C]
  • 在第二次迭代中,i == 1,所以arr.remove(i)将删除C;阵列现在是[B]
  • 在第三次迭代中,i == 2超出了数组的长度,因此循环停止。

您的最终数组是[B]而不是[]

迭代反向:

for (int i =json_array.length() - 1;i >= 0; i--) { 
    json_array.remove(i); 
} 
0

我要与一定的条件

然后无需使用for-loopJSONArray移除项删除整个JSON数组,只是删除整个EmployeeJSONArray from JSONObject使用Employee key:

JSONObject jsonObject=new JSONObject(<json_string>); 
jsonObject.remove("Employee"); //<< pass JSONArray name here 
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 at position 
     if (i != position) 
     { 
      list.put(jsonArray.get(i)); 
     } 
    } 
    //Remove the element from arraylist 
    list.remove(position); 
}