0

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?

1
  • Ohemgee. 1. Use List instead of arrays; 2. use Gson library Commented Aug 16, 2016 at 13:24

2 Answers 2

2

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.

Sign up to request clarification or add additional context in comments.

8 Comments

java.lang.NullPointerException: Attempt to read from null array , again
I have updated my answer. The JSONArray is to be retrieved from the jo object. Please try now.
No , it is null array again
It shouldn't be. Try adding a break point to the line and debug what keys are present in the jo object.
OK ,debug it , But in your code 'image[j] = img.getString(j)' is wrong. 'getString(String values)'
|
0

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.