2016-08-16 57 views
0

我解析json數據,我有2個數組。我已經成功地解析了第一個json數組「item」,現在我不知道如何解析第二個「img」Json多個數組解析爲空

這裏是我的代碼:

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

這裏是安卓端代碼:

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

如何解決呢?

+0

Ohemgee。 1.使用List而不是數組; 2.使用Gson庫 – Damiano

回答

2

解析它是這樣的:

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

此外,最好使用庫像GSON解析。

+0

java.lang.NullPointerException:嘗試讀取null數組,再次 –

+0

先生不被解僱 –

+0

我已經更新了我的答案。 'JSONArray'將從'jo'對象中檢索。請現在嘗試。 –

0

嘗試執行下面的代碼,這種使用列表,而不是數組,這是不太可能有誤差修改(如邊界的指數)

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