首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从JSONArray中删除特定元素?

如何从JSONArray中删除特定元素?
EN

Stack Overflow用户
提问于 2012-01-11 22:01:21
回答 7查看 152.6K关注 0票数 37

我正在构建一个应用程序,在其中我从服务器请求一个PHP文件。这个PHP文件返回一个以JSONObjects作为其元素的JSONArray,例如,

代码语言:javascript
复制
[ 
  {
    "uniqid":"h5Wtd", 
    "name":"Test_1", 
    "address":"tst", 
    "email":"ru_tst@tst.cc", 
    "mobile":"12345",
    "city":"ind"
  },
  {...},
  {...},
  ...
]

我的代码:

代码语言:javascript
复制
/* 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中删除特定元素?

EN

回答 7

Stack Overflow用户

发布于 2013-11-28 03:09:09

代码语言:javascript
复制
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;

}
票数 3
EN

Stack Overflow用户

发布于 2012-12-18 01:24:26

我猜你使用的是我的版本,我建议在你的代码(JSONArray.java)中手动添加这段函数:

代码语言:javascript
复制
public Object remove(int index) {
    Object o = this.opt(index);
    this.myArrayList.removeElementAt(index);
    return o;
}

在java版本中他们使用ArrayList,在ME版本中他们使用矢量。

票数 1
EN

Stack Overflow用户

发布于 2015-11-11 11:45:32

您可以使用反射

一个中文网站提供了相关的解决方案:http://blog.csdn.net/peihang1354092549/article/details/41957369

如果你不懂中文,请试着用翻译软件来阅读。

他为旧版本提供了以下代码:

代码语言:javascript
复制
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);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8820551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档