过滤Json数组

时间:2017-09-10 04:15:23

标签: java android json

这是我第一次与json合作,我很难尝试过滤数组我试图获得所有值(tienda),其中id_estado = 1。

有任何线索如何处理?

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

提前致谢

2 个答案:

答案 0 :(得分: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属性添加到过滤值列表中。

答案 1 :(得分:0)

试试这个

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

        }

我们必须使用您的案例中缺少的JSONObject json_data = jsonArray.getJSONObject(i);在JSON中创建每个嵌套JSON项的对象。