2016-08-16 14 views
0

Ich analysiere JSON Daten und ich habe 2 Array. Ich habe erfolgreich das erste JSON-Array "Element" parsen, jetzt habe ich keine Ahnung, wie ich 2. "img" analysieren kann.Json mehrere Array-Parsing ist null

Hier ist mein 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" 
     ] 
    } 
    ] 
} 

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

Wie es zu lösen?

+0

Ohemgee. 1. Verwenden Sie List anstelle von Arrays; 2. Verwenden Sie Gson Bibliothek – Damiano

Antwort

2

Parse es wie folgt aus:

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

Darüber hinaus ist es besser, eine Bibliothek wie GSON für die Analyse zu verwenden.

+0

java.lang.NullPointerException: Versuch, von Null-Array zu lesen, wieder –

+0

Sir nicht wieder freigegeben –

+0

Ich habe meine Antwort aktualisiert. Das 'JSONArray' soll vom' jo' Objekt abgerufen werden. Bitte versuchen Sie es jetzt. –

0

Versuchen Sie den Code unten, diese Verwendung Liste anstelle von Arrays zu implementieren, ist es weniger wahrscheinlich, dass erros haben (wie ein 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(); 
     } 
    }