在数组中查找是否存在特定的文件

时间:2019-02-13 06:43:14

标签: android arraylist android-volley

这是我的api

{}JSON
[]products
{}0
product-name : "Fiting"
product-id : "1"
product-description : "Door"
product-image : "https://image/logo.jpg"
product-categoryid : "2"
category-name : "Furniture"
{}1
product-name : "Bathroom"
product-id : "2"
product-description : "Services"
product-image : "https://image/logo.jpg"
product-categoryid : "1"
category-name : "Plumber"
subcategory-id : "1"
subcategory-name : "Bathroom"
  

subCategoryDe​​tailModelClass.setSubCategoryId(productObject.getInt(“ subcategory-id”));;                                   subCategoryDe​​tailModelClass.setSubCategoryName(productObject.getString(“ subcategory-name”));

我无法在我的数组列表中添加subcategory-id,subcategory-name,因为它在第0位不可用.....所以如何检查条件,如果在api subcategory-id中,subcategory-name不可用,请添加其他列表中的项目

StringRequest stringRequest = new StringRequest(Request.Method.GET,URLs.productURL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Log.d("zsded", response.toString());

                        try {

                            JSONObject obj = new JSONObject(response);

                            JSONArray productArray = obj.getJSONArray("products");

                            //now looping through all the elements of the json array
                            for (int i = 0; i < productArray.length(); i++) {

                                JSONObject productObject = productArray.getJSONObject(i);

                                SubCategoryDetailModelClass subCategoryDetailModelClass = new SubCategoryDetailModelClass();


                              //  if(productObject.getInt("subcategory-id"))

                                subCategoryDetailModelClass.setProduct_name(productObject.getString("product-name"));
                                subCategoryDetailModelClass.setProduct_id(productObject.getInt("product-id"));
                                subCategoryDetailModelClass.setProduct_desc(productObject.getString("product-description"));
                                subCategoryDetailModelClass.setProduct_imgURL(productObject.getString("product-image"));
                                subCategoryDetailModelClass.setProduct_CategoryId(productObject.getInt("product-categoryid"));
                                subCategoryDetailModelClass.setProduct_Category_Name(productObject.getString("category-name"));
                                subCategoryDetailModelClass.setSubCategoryId(productObject.getInt("subcategory-id"));
                                subCategoryDetailModelClass.setSubCategoryName(productObject.getString("subcategory-name"));
                                subCategoryListDetailModelClassArray.add(subCategoryDetailModelClass);

                                Log.d("subcatdetail", String.valueOf(subCategoryDetailModelClass));

                            }

2 个答案:

答案 0 :(得分:0)

使用此类

public class JSONHelper {

    public static String getString(JSONObject json, String tag) throws JSONException {
        if(mJSONValueAvailable(json, tag)) {
            return json.getString(tag);
        }

        return "";
    }

    public static int getInt(JSONObject json, String tag) throws JSONException {
        if(mJSONValueAvailable(json, tag)) {
            if(json.get(tag) instanceof String) {
                if(json.getString(tag).equalsIgnoreCase("None")) {
                    return -1;
                }
                if(!json.getString(tag).equals("")) {
                    return Integer.parseInt(json.getString(tag));
                } else {
                    return -1;
                }

            }
            return json.getInt(tag);
        }

        return -1;
    }

    public static boolean getBoolean(JSONObject json, String tag) throws JSONException {
        if(mJSONValueAvailable(json, tag)) {
            Object value = json.get(tag);

            if(value instanceof String) {
                return PrimitiveHelper.StringToBoolean((String) value);
            } else if (value instanceof Integer) {
                return PrimitiveHelper.IntegerToBoolean((int)value);
            }

            return json.getBoolean(tag);
        }
        return false;
    }


    public static Boolean getBooleanBoxed(JSONObject json, String tag) throws JSONException {
        if(mJSONValueAvailable(json, tag)) {
            Object value = json.get(tag);

            if(value instanceof String) {
                return PrimitiveHelper.StringToBooleanBoxed((String) value);
            } else if (value instanceof Integer) {
                return PrimitiveHelper.IntegerToBooleanBoxed((int) value);
            }

            return json.getBoolean(tag);
        }
        return null;//false;
    }

    private static boolean mJSONValueAvailable(JSONObject json, String tag) {
        return json.has(tag) && !json.isNull(tag);
    }

//    private static Boolean mJSONValueAvailableBoxed(JSONObject json, String tag) {
//        return json.has(tag) && !json.isNull(tag);//
//    }


    public static JSONArray sortJsonArray(JSONArray array, String sort) {

        final String sortKey = sort;
        //Logger.d("sortJSONArray by::: " + sortKey);

        List<JSONObject> jsons = new ArrayList<JSONObject>();

        try {
            for (int i = 0; i < array.length(); i++) {
                jsons.add(array.getJSONObject(i));
            }
            Collections.sort(jsons, new Comparator<JSONObject>() {
                @Override
                public int compare(JSONObject lhs, JSONObject rhs) {
                    try {
                        String lid = lhs.getString(sortKey);
                        String rid = rhs.getString(sortKey);
                        // Here you could parse string id to integer and then compare.
                        return lid.compareTo(rid);
                    } catch (JSONException e) {
                        e.printStackTrace();

                    }
                    return 0;
                }
            });

        } catch (JSONException e) {
            e.printStackTrace();
        }

        return new JSONArray(jsons);

    }
}

按以下方式调用

subCategoryDetailModelClass.setProduct_name(JSONHelper.getString(productObject, "product-name"));
                    subCategoryDetailModelClass.setProduct_id(JSONHelper.getInt(productObject,"product-id"));
                    subCategoryDetailModelClass.setProduct_desc(JSONHelper.getString(productObject, "product-description"));
                    subCategoryDetailModelClass.setProduct_imgURL(JSONHelper.getString(productObject, "product-image"));
                    subCategoryDetailModelClass.setProduct_CategoryId(JSONHelper.getInt(productObject,"product-categoryid"));
                    subCategoryDetailModelClass.setProduct_Category_Name(JSONHelper.getString(productObject, "category-name"));
                    subCategoryDetailModelClass.setSubCategoryId(JSONHelper.getInt(productObject, "subcategory-id"));
                    subCategoryDetailModelClass.setSubCategoryName(JSONHelper.getString(productObject,"subcategory-name"));
                    subCategoryListDetailModelClassArray.add(subCategoryDetailModelClass);

答案 1 :(得分:0)

使用Opt方法,例如

optInt(String name, int fallback) 
  

返回按名称映射的值(如果存在)并且是int或可以是   强制转换为int,否则转换为后备。

对于大多数原始数据类型,都有optMethods,请检查here