1

Das ist mein ist JSonArrayIterieren durch JSonArray Antwort von url mit android Volley

{ 
    "vendor":[ 
     { 
     "vendor_name":"Tapan Moharana", 
     "vendor_description":"", 
     "vendor_slug":"tapan", 
     "vendor_logo":null, 
     "contact_number":null 
     } 
    ], 
    "products":[ 
     { 
     "name":"Massage", 
     "price":"5000.0000", 
     "image":"http:\/\/carrottech.com\/lcart\/media\/catalog\/product\/cache\/1\/image\/150x\/9df78eab33525d08d6e5fb8d27136e95\/2\/9\/29660571-beauty-spa-woman-portrait-beautiful-girl-touching-her-face.jpg" 
     }, 
     { 
     "name":"Chicken Chilly", 
     "price":"234.0000", 
     "image":"http:\/\/carrottech.com\/lcart\/media\/catalog\/product\/cache\/1\/image\/150x\/9df78eab33525d08d6e5fb8d27136e95\/c\/h\/cheicken.jpg" 
     }, 
     { 
     "name":"Chicken Biryani", 
     "price":"500.0000", 
     "image":"http:\/\/carrottech.com\/lcart\/media\/catalog\/product\/cache\/1\/image\/150x\/9df78eab33525d08d6e5fb8d27136e95\/placeholder\/default\/image_1.jpg" 
     } 
    ] 
} 

und das ist mein Java-Code:

JSONObject jsono = new JSONObject(response); 
    JSONArray children = jsono.getJSONArray("vendor"); 
    JSONArray childrenProducts = jsono.getJSONArray("products"); 
    for (int i = 0; i <children.length(); i++) { 
     JSONObject jsonData = children.getJSONObject(i); 
     System.out.print(jsonData.getString("vendor_name") + "<----"); 
     // String vendorThumbNailURL=jsonData.getString("") 
     //jvendorImageURL.setImageUrl(local, mImageLoader); 
     vendorLogo=vendorLogo+jsonData.getString("vendor_logo").trim(); 
     jvendorImageURL.setImageUrl(vendorLogo, mImageLoader); 
     jvendorName.setText(jsonData.getString("vendor_name")); 
     jvendorAbout.setText(jsonData.getString("vendor_description")); 
     jvendorContact.setText(jsonData.getString("contact_number")); 
     System.out.print(jsonData.getString("products") + "<----"); 
    } 
    for(int i=0;i<childrenProducts.length();i++){ 
     JSONObject jsonData = childrenProducts.getJSONObject(i); 
     System.out.println("inside products"); 
     System.out.print(jsonData.getString("name") + "<----dd"); 
    } 

Die erste for-Schleife arbeitet gut, aber die 2. Forloop ist nicht .. Ich bekomme nichts, wenn ich versuche, diese Druckanweisungen innerhalb der zweiten for-Schleife auszuführen .. bitte hilf mir !!

+0

In Ihrer Antwort Kinder hat nur ein Element bedeutet Kinder Größe ist 1, deshalb iteriert es nur onse .. –

+0

Ich habe ein separates Objekt gemacht: JSONArray childrenProducts = jsono.getJSONArray ("Produkte"); Das ist das zweite Array Es ist seltsam, dass dieser Code nicht funktioniert. –

+0

Welchen Wert erhalten Sie für childrenProducts.length() ?? –

Antwort

1

Warum verwenden Sie Gson nicht, um die JSON-Zeichenfolge einfach analysieren zu lassen?

Sie müssen Klassen zuerst so deklarieren, dass sie der JSON-Antwort entsprechen.

public class Vendor { 

    private String vendor_name; 
    private String vendor_description; 
    private String vendor_slug; 
    private String vendor_logo; 
    private String contact_number; 

    public Vendor() { 
    } 

    public String getVendor_name() { 
     return vendor_name; 
    } 

    public String getVendor_description() { 
     return vendor_description; 
    } 

    public String getVendor_slug() { 
     return vendor_slug; 
    } 

    public String getVendor_logo() { 
     return vendor_logo; 
    } 

    public String getContact_number() { 
     return contact_number; 
    } 
} 

...

public class Product { 

    private String name; 
    private String price; 
    private String image; 

    public Product() { 
    } 

    public String getName() { 
     return name; 
    } 

    public String getPrice() { 
     return price; 
    } 

    public String getImage() { 
     return image; 
    } 
} 

Jetzt erklären die Response Klasse wie dieses

public class Response { 

    private List<Vendor> vendor; 
    private List<Product> products; 

    public Response() { 
    } 

    public List<Vendor> getVendor() { 
     return vendor; 
    } 

    public List<Product> getProducts() { 
     return products; 
    } 
} 

nun einmal haben Sie die JSON-String ist es einfach, die Daten unter Verwendung von Gson in die abprallen Response Klasse wie folgt.

Gson gson = new Gson(); 
Response mResponse = gson.fromJson(jsonString, Response.class); 

Einfach!

+0

Wenn es zuerst die Daten atleast druckt dann kann ich mit dem fortfahren, was Sie sagten, aber es ist nicht die Daten überhaupt drucken .. –

+0

Sie haben die JSON-Zeichenfolge richtig? Sie können mit diesem Verfahren trotzdem fortfahren. Möglicherweise liegt ein Problem mit der Schleife oder dem Parsing vor. Lassen Sie GSON das Parsing für Sie durchführen. Sie erhalten nur die Werte aus der 'mResponse'-Klasse und versuchen dann, sie auszudrucken. Es ist einfach zu bedienen und ich habe fast den vollständigen Code für Sie geschrieben. –

1

Es geht nicht in Ihrer zweiten for-Schleife, weil SomeException in Ihrer ersten for-Schleife ist.

Ihre Ausführung wird an eine beliebige catch()-Klausel hinausgeschmissen, und die weitere Ausführung wird einschließlich Ihrer zweiten for-Schleife nicht durchgeführt.

Versuchen Sie einfach, dass die Inbetriebnahme wie folgt auf:

JSONObject jsono = new JSONObject(response); 
    JSONArray children = jsono.getJSONArray("vendor"); 
    JSONArray childrenProducts = jsono.getJSONArray("products"); 

    //this will be executed now..!! 

    for(int i=0;i<childrenProducts.length();i++){ 
     JSONObject jsonData = childrenProducts.getJSONObject(i); 
     System.out.println("inside products"); 
     System.out.print(jsonData.getString("name") + "<----dd"); 
    } 

    for (int i = 0; i <children.length(); i++) { 
     JSONObject jsonData = children.getJSONObject(i); 
     System.out.print(jsonData.getString("vendor_name") + "<----"); 
     // String vendorThumbNailURL=jsonData.getString("") 
     //jvendorImageURL.setImageUrl(local, mImageLoader); 
     vendorLogo=vendorLogo+jsonData.getString("vendor_logo").trim(); 
     jvendorImageURL.setImageUrl(vendorLogo, mImageLoader); 
     jvendorName.setText(jsonData.getString("vendor_name")); 
     jvendorAbout.setText(jsonData.getString("vendor_description")); 
     jvendorContact.setText(jsonData.getString("contact_number")); 
     System.out.print(jsonData.getString("products") + "<----"); 
    } 
+0

es funktionierte nicht, auch wenn der Verkäufer einen Wert hatte, aber ich denke, es war vielleicht wegen einer Ausnahme –

+0

genau .. Das wird funktionieren, wenn Sie nicht versuchen, zwei .. Fang .. !! –

+0

Ich habe bearbeitet, um korrekt zu sein .. !! Das war das eigentliche Problem .. Bitte akzeptieren Sie es, wenn es das gleiche Problem erklärt .. !! –

0

Dies ist, wie ich es gelöst:

try { 
        JSONObject jsono = new JSONObject(response); 
        JSONArray children = jsono.getJSONArray("vendor"); 
        for (int i = 0; i <children.length(); i++) { 
         JSONObject jsonData = children.getJSONObject(i); 
         System.out.print(jsonData.getString("vendor_name") + "<----"); 
         // String vendorThumbNailURL=jsonData.getString("") 
         //jvendorImageURL.setImageUrl(local, mImageLoader); 
         vendorLogo=vendorLogo+jsonData.getString("vendor_logo").trim(); 
         jvendorImageURL.setImageUrl(vendorLogo, mImageLoader); 
         jvendorName.setText(jsonData.getString("vendor_name")); 
         jvendorAbout.setText(jsonData.getString("vendor_description")); 
         jvendorContact.setText(jsonData.getString("contact_number")); 
         System.out.print(jsonData.getString("products") + "<----"); 
        } 

       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

       try { 
        JSONObject jsono = new JSONObject(response); 
        JSONArray childrenProducts = jsono.getJSONArray("products"); 
        System.out.println(childrenProducts.length()+"LENGTH"); 
        for(int i=0; i<childrenProducts.length(); i++){ 
         JSONObject jsonData1 = childrenProducts.getJSONObject(i); 
         System.out.println(childrenProducts.length() + "LENGTH"); 
         System.out.print(jsonData1.getString("name") + "<----dd"); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 

nur zwei separate try-Blöcke nehmen musste ... kann mir bitte jemand sagen, warum war funktioniert es nicht in einem try block? Der obige Code funktioniert

+0

siehe meine Antwort .. http://stackoverflow.com/a/37344516/6127411 –