hamed golbahar
hamed golbahar

Reputation: 149

Json multiple array parsing is null

I am parsing json data and i have 2 array. I have successfully parse the 1st json array "item" ,now i have no idea how i can parse 2nd "img".

Here is my code :

 {
  "item": [
    {
      "description": "بافت عالی با قاب",
      "price": "11000000000000",
      "country": "ايران",
      "address": "کوچه مهران یک پلاک7",
      "region": "البرز",
      "city": "کرج",
      "mobile": null,
      "cat": "حیوانات و مناظر طبیعی",
      "img": [
        "http://tajerfarsh.com/oc-content/themes/tgsh/images/slider/slider11.jpg",
        "http://tajerfarsh.com/oc-content/themes/tgsh//images/categorys/109.jpg",
        "http://tajerfarsh.com/oc-content/themes/tgsh//images/categorys/125.jpg"
      ]
    }
  ]
}

and here is android side code :

   public class ParseJSON1 {
    public static String[] ids;
    public static String[] descriptions;
    public static String[] email;
    public static String[] country;
    public static String[] address;
    public static String[] region;
    public static String[] city;
    public static String[] cat;
    public static String[] image;
    public static String[] mobiles;

    public static final String JSON_ARRAY = "item";
    public static final String KEY_ID = "id";
    public static final String DESCCRIPTION = "description";
    public static final String EMAIL = "emails";
    public static final String COUNTRY = "country";
    public static final String ADDRESS = "address";
    public static final String REGION = "region";
    public static final String CITY = "city";
    public static final String CATEGORY = "cat";
    public static final String IMAGE = "img";
    public static final String MOBILE = "mobile";

    private JSONArray users = null;

    private String json;

    public ParseJSON1(String json){
        this.json = json;
    }

    protected void parseJSON1(){
        JSONObject jsonObject=null;
        try {
            jsonObject = new JSONObject(json);
            users = jsonObject.getJSONArray(JSON_ARRAY);



            ids = new String[users.length()];
            descriptions = new String[users.length()];
            country = new String[users.length()];
            address = new String[users.length()];
            region = new String[users.length()];
            city = new String[users.length()];
            cat = new String[users.length()];
            email = new String[users.length()];
            mobiles = new String[users.length()];

            for(int i=0;i<users.length();i++){
                JSONObject jo = users.getJSONObject(i);
                ids[i] = jo.getString(KEY_ID);
                descriptions[i] = jo.getString(DESCCRIPTION);
                email[i] = jo.getString(EMAIL);
                country[i] = jo.getString(COUNTRY);
                address[i] = jo.getString(ADDRESS);
                region[i] = jo.getString(REGION);
                city[i] = jo.getString(CITY);
                cat[i] = jo.getString(CATEGORY);
              //  image[i] = jo.getString(IMAGE);
                mobiles[i] = jo.getString(MOBILE);

             JSONArray img = jsonObject.getJSONArray("img");
                image = new String[img.length()];
                for (int j=0;j<img.length();j++){
                    image[i] = jo.getString(IMAGE);
                }
            }



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

How to resolve it?

Upvotes: 0

Views: 107

Answers (2)

Lucas Queiroz Ribeiro
Lucas Queiroz Ribeiro

Reputation: 735

Try implement the code below, this use List instead of arrays, it's less likely to have erros (like an Index of Bounds)

try {
            jsonObject = new JSONObject(json);
            users = jsonObject.getJSONArray(JSON_ARRAY);



            List<String> ids = new ArrayList<>();
            List<String> descriptions = new ArrayList<>();
            List<String> country = new ArrayList<>();
            List<String> address = new ArrayList<>();
            List<String> region = new ArrayList<>();
            List<String> city = new ArrayList<>();
            List<String> cat = new ArrayList<>();
            List<String> email = new ArrayList<>();
            List<String> mobiles = new ArrayList<>();
            List<String[]> img = new ArrayList<>();

            for(int i=0;i<users.length();i++){
                JSONObject jo = users.getJSONObject(i);
                ids.add(jo.getString(KEY_ID));
                // Do te rest of the "add"

                JSONArray imgs = jo.getJSONArray(IMAGE)                 

               image = new String[imgs.length()];
                for (int j=0;j<imgs.length();j++){                         
                    image = jo.getString(j);
                    img .add(image);
                }
            }



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

Upvotes: 0

Eric B.
Eric B.

Reputation: 4702

Parse it like this:

JSONArray img = jo.getJSONArray("img");
image = new String[img.length()];
for (int j=0;j<img.length();j++){
    image[j] = img.getString(j);
}

Moreover, it's better to use a library like GSON for parsing.

Upvotes: 2

Related Questions