2017-09-10 16 views
0

これは私が初めてjsonと仕事をしていて、id_estado = 1のすべての値(ティエンダ)を取得しようとしている配列をフィルタリングしようとしています。フィルタJson配列

どのように手掛かりがありますか?

JA1= [{"id_estado":"1","tienda":"Aurrera"},{"id_estado":"1","tienda":"Walt-Mart"},{"id_estado":"1","tienda":"Chedraui"},{"id_estado":"1","tienda":"Soriana"},{"id_estado":"1","tienda":"Comercial MX"},{"id_estado":"1","tienda":"City Market"},{"id_estado":"2","tienda":"Walt-Mart"},{"id_estado":"2","tienda":"Chedraui"},{"id_estado":"2","tienda":"Aurrera"},{"id_estado":"2","tienda":"Superama"}] 

      JSONArray JA1=new JSONArray(result1); 
     JSONObject json1= null; 
     name = new String[JA1.length()]; 
      for (int i = 0; i < JA1.length(); i++) { 
       Log.d("LOG", "resultado name sin arreglo11 " + JA1); 
       //name[i] = json1.getString("tienda"); 
       //name[i]=json1.getString("estado"); 
      } 

     for(int i=0;i<name.length;i++) 
     { 
      list2.add(name[i]); 
      Log.d("LOG", "resultado name2 " + name[i]); 
     } 

事前

+0

*ヒント:*配列をフィルタリングする場合、結果の配列はおそらく小さくなります。結果として得られる配列のサイズは前もって知ることができないので、 'String []'ではなく 'ArrayList 'を使用して結果を収集する必要があります。 – Andreas

答えて

2

のおかげでは、ここで私はそれを行うだろう方法は次のとおりです。

try { 
     List<String> filtered = new ArrayList<>(); 
     JSONArray ary = new JSONArray(/* your json here */); 

     for (int i = 0; i < ary.length(); ++i) { 
      JSONObject obj = ary.getJSONObject(i); 
      String id = obj.getString("id_estado"); 
      if (id.equals("1")) { 
       filtered.add(obj.getString("tienda")); 
      } 
     } 
    } catch (JSONException e) { 
     // handle exception 
    } 

このコードの説明:

  • フィルタリングされた値を保持するためにArrayListを作成します。
  • jsonテキストからJSONArrayを作成します。
  • アレイの各要素を反復処理し、毎回JSONObjectを取り出します。
  • オブジェクトごとに、id_estadoプロパティを取得し、"1"と等しいかどうかを確認します。
  • この場合、フィルタリングされた値のリストにtiendaプロパティを追加します。
0

は、私たちがあなたのケースで行方不明になったJSONObject json_data = jsonArray.getJSONObject(i);を使用してJSONにネストされた各JSONアイテムのオブジェクトを作成する必要があり、この

for (int i = 0; i < JA1.length(); i++) { 
      JSONObject json_data = jsonArray.getJSONObject(i); 
      name[i] = json_data.getString("tienda"); 

     } 

してみてください。

関連する問題