我正在构建一个应用程序,在其中我从服务器请求一个PHP文件。这个PHP文件返回一个以JSONObjects作为其元素的JSONArray,例如,
[
{
"uniqid":"h5Wtd",
"name":"Test_1",
"address":"tst",
"email":"ru_tst@tst.cc",
"mobile":"12345",
"city":"ind"
},
{...},
{...},
...
]
我的代码:
/* jArrayFavFans is the JSONArray i build from string i get from response.
its giving me correct JSONArray */
JSONArray jArrayFavFans=new JSONArray(serverRespons);
for (int j = 0; j < jArrayFavFans.length(); j++) {
try {
if (jArrayFavFans.getJSONObject(j).getString("uniqid").equals(id_fav_remov)) {
//jArrayFavFans.getJSONObject(j).remove(j); //$ I try this to remove element at the current index... But remove doesn't work here ???? $
//int index=jArrayFavFans.getInt(j);
Toast.makeText(getParent(), "Object to remove...!" + id_fav_remov, Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
如何从此JSONArray中删除特定元素?
发布于 2013-11-28 03:09:09
public static JSONArray RemoveJSONArray( JSONArray jarray,int pos) {
JSONArray Njarray=new JSONArray();
try{
for(int i=0;i<jarray.length();i++){
if(i!=pos)
Njarray.put(jarray.get(i));
}
}catch (Exception e){e.printStackTrace();}
return Njarray;
}
发布于 2012-12-18 01:24:26
我猜你使用的是我的版本,我建议在你的代码(JSONArray.java)中手动添加这段函数:
public Object remove(int index) {
Object o = this.opt(index);
this.myArrayList.removeElementAt(index);
return o;
}
在java版本中他们使用ArrayList,在ME版本中他们使用矢量。
发布于 2015-11-11 11:45:32
您可以使用反射
一个中文网站提供了相关的解决方案:http://blog.csdn.net/peihang1354092549/article/details/41957369
如果你不懂中文,请试着用翻译软件来阅读。
他为旧版本提供了以下代码:
public void JSONArray_remove(int index, JSONArray JSONArrayObject) throws Exception{
if(index < 0)
return;
Field valuesField=JSONArray.class.getDeclaredField("values");
valuesField.setAccessible(true);
List<Object> values=(List<Object>)valuesField.get(JSONArrayObject);
if(index >= values.size())
return;
values.remove(index);
}
https://stackoverflow.com/questions/8820551
复制相似问题