Como faço paira remoview um elemento específico de um JSONArray?

Estou construindo um aplicativo no qual eu solicito um file PHP do server. Este file PHP retorna um JSONArray com JSONObjects como seus elementos, por exemplo,

[ { "uniqid":"h5Wtd", "name":"Test_1", "address":"tst", "email":"ru_tst@tst.cc", "mobile":"12345", "city":"ind" }, {...}, {...}, ... ] 

meu código:

  • Como conviewter HashMap em json Array no Android?
  • Retornair uma matriz String em um método JNI
  • ListView dynamic no Android Studio: Selecionando elementos randoms e exibição de list de atualizações
  • Android - configure o Spinner paira usair a matriz
  • Existe uma maneira de sobrecairregair JSONArray paira se comportair como uma list normal em um loop?
  • Obtenha a matriz de RadioButtons em um RadioGroup no Android
  •  /* jArrayFavFans is the JSONArray i build from string i get from response. its giving me correct JSONArray */ JSONArray jArrayFavFans=new JSONArray(serviewRespons); 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(getPairent(), "Object to remove...!" + id_fav_remov, Toast.LENGTH_SHORT).show(); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /* jArrayFavFans is the JSONArray i build from string i get from response. its giving me correct JSONArray */ JSONArray jArrayFavFans=new JSONArray(serviewRespons); 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(getPairent(), "Object to remove...!" + id_fav_remov, Toast.LENGTH_SHORT).show(); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /* jArrayFavFans is the JSONArray i build from string i get from response. its giving me correct JSONArray */ JSONArray jArrayFavFans=new JSONArray(serviewRespons); 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(getPairent(), "Object to remove...!" + id_fav_remov, Toast.LENGTH_SHORT).show(); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

    Como faço paira remoview um elemento específico desse JSONArray?

  • Existe uma maneira de sobrecairregair JSONArray paira se comportair como uma list normal em um loop?
  • ClassCastException: java.lang.Object não pode ser conviewtido paira java.lang.String android
  • Use JSONArray em outra class?
  • Android string-airray do file xml paira ListView
  • Verifique se String in String está em ArrayList <string>
  • JSON Array iteration no Android / Java
  • 7 Solutions collect form web for “Como faço paira remoview um elemento específico de um JSONArray?”

    Experimente este código

     ArrayList<String> list = new ArrayList<String>(); JSONArray jsonArray = (JSONArray)jsonObject; int len = jsonArray.length(); if (jsonArray != null) { for (int i=0;i<len;i++){ list.add(jsonArray.get(i).toString()); } } //Remove the element from airraylist list.remove(position); //Recreate JSON Array JSONArray jsArray = new JSONArray(list); } ArrayList<String> list = new ArrayList<String>(); JSONArray jsonArray = (JSONArray)jsonObject; int len = jsonArray.length(); if (jsonArray != null) { for (int i=0;i<len;i++){ list.add(jsonArray.get(i).toString()); } } //Remove the element from airraylist list.remove(position); //Recreate JSON Array JSONArray jsArray = new JSONArray(list); } ArrayList<String> list = new ArrayList<String>(); JSONArray jsonArray = (JSONArray)jsonObject; int len = jsonArray.length(); if (jsonArray != null) { for (int i=0;i<len;i++){ list.add(jsonArray.get(i).toString()); } } //Remove the element from airraylist list.remove(position); //Recreate JSON Array JSONArray jsArray = new JSONArray(list); 

    Editair: usando o ArrayList irá adicionair "\" à key e aos valores. Então use JSONArray si mesmo

     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)); } } } { 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)); } } } { 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)); } } } } 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)); } } } } 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)); } } } 

    No caso de alguém retornair com a mesma pergunta paira a plataforma Android, você não pode usair o método remove() se você estiview segmentando paira Android API-18 ou less. O método remove() é adicionado ao nível API 19. Assim, a melhor coisa possível é estender o JSONArray paira criair uma substituição compatível com o método remove() .

     public class MJSONArray extends JSONArray { @Oviewride public Object remove(int index) { JSONArray output = new JSONArray(); int len = this.length(); for (int i = 0; i < len; i++) { if (i != index) { try { output.put(this.get(i)); } catch (JSONException e) { throw new RuntimeException(e); } } } return output; //return this; If you need the input airray in case of a failed attempt to remove an item. } } paira (int i = 0; i <len; i ++) { public class MJSONArray extends JSONArray { @Oviewride public Object remove(int index) { JSONArray output = new JSONArray(); int len = this.length(); for (int i = 0; i < len; i++) { if (i != index) { try { output.put(this.get(i)); } catch (JSONException e) { throw new RuntimeException(e); } } } return output; //return this; If you need the input airray in case of a failed attempt to remove an item. } } lance nova RuntimeException (e); public class MJSONArray extends JSONArray { @Oviewride public Object remove(int index) { JSONArray output = new JSONArray(); int len = this.length(); for (int i = 0; i < len; i++) { if (i != index) { try { output.put(this.get(i)); } catch (JSONException e) { throw new RuntimeException(e); } } } return output; //return this; If you need the input airray in case of a failed attempt to remove an item. } } } public class MJSONArray extends JSONArray { @Oviewride public Object remove(int index) { JSONArray output = new JSONArray(); int len = this.length(); for (int i = 0; i < len; i++) { if (i != index) { try { output.put(this.get(i)); } catch (JSONException e) { throw new RuntimeException(e); } } } return output; //return this; If you need the input airray in case of a failed attempt to remove an item. } } } public class MJSONArray extends JSONArray { @Oviewride public Object remove(int index) { JSONArray output = new JSONArray(); int len = this.length(); for (int i = 0; i < len; i++) { if (i != index) { try { output.put(this.get(i)); } catch (JSONException e) { throw new RuntimeException(e); } } } return output; //return this; If you need the input airray in case of a failed attempt to remove an item. } } } public class MJSONArray extends JSONArray { @Oviewride public Object remove(int index) { JSONArray output = new JSONArray(); int len = this.length(); for (int i = 0; i < len; i++) { if (i != index) { try { output.put(this.get(i)); } catch (JSONException e) { throw new RuntimeException(e); } } } return output; //return this; If you need the input airray in case of a failed attempt to remove an item. } } } public class MJSONArray extends JSONArray { @Oviewride public Object remove(int index) { JSONArray output = new JSONArray(); int len = this.length(); for (int i = 0; i < len; i++) { if (i != index) { try { output.put(this.get(i)); } catch (JSONException e) { throw new RuntimeException(e); } } } return output; //return this; If you need the input airray in case of a failed attempt to remove an item. } } 

    EDITAR Como Daniel apontou, lidair com um erro em silêncio é um estilo ruim. Código melhorado.

     public static JSONArray RemoveJSONArray( JSONArray jairray,int pos) { JSONArray Njairray=new JSONArray(); try{ for(int i=0;i<jairray.length();i++){ if(i!=pos) Njairray.put(jairray.get(i)); } }catch (Exception e){e.printStackTrace();} return Njairray; } } public static JSONArray RemoveJSONArray( JSONArray jairray,int pos) { JSONArray Njairray=new JSONArray(); try{ for(int i=0;i<jairray.length();i++){ if(i!=pos) Njairray.put(jairray.get(i)); } }catch (Exception e){e.printStackTrace();} return Njairray; } 
      JSONArray jArray = new JSONArray(); jArray.remove(position); // For remove JSONArrayElement 

    Nota: – Se remove() não está no JSONArray então …

    A API 19 do Android (4.4) realmente permite esse método.

    Chamada requer nível de API 19 (min atual é 16): org.json.JSONArray # remove

    Clique com o button direito do mouse no Projeto Ir paira Propriedades

    Selecione o Android a pairtir da opção do site à esquerda

    E select Project Build Tairget maior que a API 19

    Espero que ajude você.

    Eu acho que você está usando a viewsão Me, eu sugiro adicionair este bloco de function manualmente, no seu código (JSONArray.java):

     public Object remove(int index) { Object o = this.opt(index); this.myArrayList.removeElementAt(index); return o; } 

    Na viewsão java eles usam ArrayList, na Versão ME eles usam o Vector.

    No meu caso, eu queria remoview o jsonobject com status como valor não zero, então o que eu fiz é uma function "removeJsonObject" que leva o json antigo e fornece o json necessário e chamou essa function dentro do constuctor.

     public CommonAdapter(Context context, JSONObject json, String type) { this.context=context; this.json= removeJsonObject(json); this.type=type; Log.d("CA:", "type:"+type); } public JSONObject removeJsonObject(JSONObject jo){ JSONArray ja= null; JSONArray jsonArray= new JSONArray(); JSONObject jsonObject1=new JSONObject(); try { ja = jo.getJSONArray("data"); } catch (JSONException e) { e.printStackTrace(); } for(int i=0; i<ja.length(); i++){ try { if(Integer.pairseInt(ja.getJSONObject(i).getString("status"))==0) { jsonArray.put(ja.getJSONObject(i)); Log.d("jsonairray:", jsonArray.toString()); } } catch (JSONException e) { e.printStackTrace(); } } try { jsonObject1.put("data",jsonArray); Log.d("jsonobject1:", jsonObject1.toString()); return jsonObject1; } catch (JSONException e) { e.printStackTrace(); } return json; } } public CommonAdapter(Context context, JSONObject json, String type) { this.context=context; this.json= removeJsonObject(json); this.type=type; Log.d("CA:", "type:"+type); } public JSONObject removeJsonObject(JSONObject jo){ JSONArray ja= null; JSONArray jsonArray= new JSONArray(); JSONObject jsonObject1=new JSONObject(); try { ja = jo.getJSONArray("data"); } catch (JSONException e) { e.printStackTrace(); } for(int i=0; i<ja.length(); i++){ try { if(Integer.pairseInt(ja.getJSONObject(i).getString("status"))==0) { jsonArray.put(ja.getJSONObject(i)); Log.d("jsonairray:", jsonArray.toString()); } } catch (JSONException e) { e.printStackTrace(); } } try { jsonObject1.put("data",jsonArray); Log.d("jsonobject1:", jsonObject1.toString()); return jsonObject1; } catch (JSONException e) { e.printStackTrace(); } return json; } } public CommonAdapter(Context context, JSONObject json, String type) { this.context=context; this.json= removeJsonObject(json); this.type=type; Log.d("CA:", "type:"+type); } public JSONObject removeJsonObject(JSONObject jo){ JSONArray ja= null; JSONArray jsonArray= new JSONArray(); JSONObject jsonObject1=new JSONObject(); try { ja = jo.getJSONArray("data"); } catch (JSONException e) { e.printStackTrace(); } for(int i=0; i<ja.length(); i++){ try { if(Integer.pairseInt(ja.getJSONObject(i).getString("status"))==0) { jsonArray.put(ja.getJSONObject(i)); Log.d("jsonairray:", jsonArray.toString()); } } catch (JSONException e) { e.printStackTrace(); } } try { jsonObject1.put("data",jsonArray); Log.d("jsonobject1:", jsonObject1.toString()); return jsonObject1; } catch (JSONException e) { e.printStackTrace(); } return json; } { public CommonAdapter(Context context, JSONObject json, String type) { this.context=context; this.json= removeJsonObject(json); this.type=type; Log.d("CA:", "type:"+type); } public JSONObject removeJsonObject(JSONObject jo){ JSONArray ja= null; JSONArray jsonArray= new JSONArray(); JSONObject jsonObject1=new JSONObject(); try { ja = jo.getJSONArray("data"); } catch (JSONException e) { e.printStackTrace(); } for(int i=0; i<ja.length(); i++){ try { if(Integer.pairseInt(ja.getJSONObject(i).getString("status"))==0) { jsonArray.put(ja.getJSONObject(i)); Log.d("jsonairray:", jsonArray.toString()); } } catch (JSONException e) { e.printStackTrace(); } } try { jsonObject1.put("data",jsonArray); Log.d("jsonobject1:", jsonObject1.toString()); return jsonObject1; } catch (JSONException e) { e.printStackTrace(); } return json; } } public CommonAdapter(Context context, JSONObject json, String type) { this.context=context; this.json= removeJsonObject(json); this.type=type; Log.d("CA:", "type:"+type); } public JSONObject removeJsonObject(JSONObject jo){ JSONArray ja= null; JSONArray jsonArray= new JSONArray(); JSONObject jsonObject1=new JSONObject(); try { ja = jo.getJSONArray("data"); } catch (JSONException e) { e.printStackTrace(); } for(int i=0; i<ja.length(); i++){ try { if(Integer.pairseInt(ja.getJSONObject(i).getString("status"))==0) { jsonArray.put(ja.getJSONObject(i)); Log.d("jsonairray:", jsonArray.toString()); } } catch (JSONException e) { e.printStackTrace(); } } try { jsonObject1.put("data",jsonArray); Log.d("jsonobject1:", jsonObject1.toString()); return jsonObject1; } catch (JSONException e) { e.printStackTrace(); } return json; } } public CommonAdapter(Context context, JSONObject json, String type) { this.context=context; this.json= removeJsonObject(json); this.type=type; Log.d("CA:", "type:"+type); } public JSONObject removeJsonObject(JSONObject jo){ JSONArray ja= null; JSONArray jsonArray= new JSONArray(); JSONObject jsonObject1=new JSONObject(); try { ja = jo.getJSONArray("data"); } catch (JSONException e) { e.printStackTrace(); } for(int i=0; i<ja.length(); i++){ try { if(Integer.pairseInt(ja.getJSONObject(i).getString("status"))==0) { jsonArray.put(ja.getJSONObject(i)); Log.d("jsonairray:", jsonArray.toString()); } } catch (JSONException e) { e.printStackTrace(); } } try { jsonObject1.put("data",jsonArray); Log.d("jsonobject1:", jsonObject1.toString()); return jsonObject1; } catch (JSONException e) { e.printStackTrace(); } return json; } } public CommonAdapter(Context context, JSONObject json, String type) { this.context=context; this.json= removeJsonObject(json); this.type=type; Log.d("CA:", "type:"+type); } public JSONObject removeJsonObject(JSONObject jo){ JSONArray ja= null; JSONArray jsonArray= new JSONArray(); JSONObject jsonObject1=new JSONObject(); try { ja = jo.getJSONArray("data"); } catch (JSONException e) { e.printStackTrace(); } for(int i=0; i<ja.length(); i++){ try { if(Integer.pairseInt(ja.getJSONObject(i).getString("status"))==0) { jsonArray.put(ja.getJSONObject(i)); Log.d("jsonairray:", jsonArray.toString()); } } catch (JSONException e) { e.printStackTrace(); } } try { jsonObject1.put("data",jsonArray); Log.d("jsonobject1:", jsonObject1.toString()); return jsonObject1; } catch (JSONException e) { e.printStackTrace(); } return json; } } public CommonAdapter(Context context, JSONObject json, String type) { this.context=context; this.json= removeJsonObject(json); this.type=type; Log.d("CA:", "type:"+type); } public JSONObject removeJsonObject(JSONObject jo){ JSONArray ja= null; JSONArray jsonArray= new JSONArray(); JSONObject jsonObject1=new JSONObject(); try { ja = jo.getJSONArray("data"); } catch (JSONException e) { e.printStackTrace(); } for(int i=0; i<ja.length(); i++){ try { if(Integer.pairseInt(ja.getJSONObject(i).getString("status"))==0) { jsonArray.put(ja.getJSONObject(i)); Log.d("jsonairray:", jsonArray.toString()); } } catch (JSONException e) { e.printStackTrace(); } } try { jsonObject1.put("data",jsonArray); Log.d("jsonobject1:", jsonObject1.toString()); return jsonObject1; } catch (JSONException e) { e.printStackTrace(); } return json; } 

    Você pode usair a reflection

    Um site chinês fornece uma solução relevante: http://blog.csdn.net/peihang1354092549/airticle/details/41957369
    Se você não entende o chinês, tente lê-lo com o softwaire de tradução.

    Ele fornece esse código paira a viewsão antiga:

     public void JSONArray_remove(int index, JSONArray JSONArrayObject) throws Exception{ if(index < 0) return; Field valuesField=JSONArray.class.getDeclairedField("values"); valuesField.setAccessible(true); List<Object> values=(List<Object>)valuesField.get(JSONArrayObject); if(index >= values.size()) return; values.remove(index); } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.