繁体   English   中英

Json多数组解析为空

[英]Json multiple array parsing is null

我正在解析json数据,我有2数组。 我已经成功解析了第一个json数组“ item” ,现在我不知道如何解析第二个“ img”

这是我的代码:

 {
  "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"
      ]
    }
  ]
}

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

怎么解决呢?

像这样解析它:

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

此外,最好使用GSON之类的库进行解析。

尝试实现下面的代码,使用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