简体   繁体   English

Json多数组解析为空

[英]Json multiple array parsing is null

I am parsing json data and i have 2 array. 我正在解析json数据,我有2数组。 I have successfully parse the 1st json array "item" ,now i have no idea how i can parse 2nd "img" . 我已经成功解析了第一个json数组“ item” ,现在我不知道如何解析第二个“ 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 : 这是android边码:

   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? 怎么解决呢?

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. 此外,最好使用GSON之类的库进行解析。

Try implement the code below, this use List instead of arrays, it's less likely to have erros (like an Index of Bounds) 尝试实现下面的代码,使用List而不是数组,它更容易出错(例如Bounds 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();
        }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM