Я создаю одно приложение, в котором я запрашиваю PHP файл с сервера. Этот PHP файл возвращает JSONArray, элементами которого являются JSONObjects, например,
[
{
"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?
Я полагаю, вы используете версию Me, я предлагаю добавить этот блок функции вручную, в своем коде (JSONArray.java):
public Object remove(int index) {
Object o = this.opt(index);
this.myArrayList.removeElementAt(index);
return o;
}
В Java-версии они используют ArrayList, в ME-версии они используйте Вектор.
Вы можете использовать отражение
Китайский веб-сайт предоставляет соответствующее решение: 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);
}