2016-07-02 8 views
1

JSON Parsen Ansicht mit mehreren Objekten zur Liste Android

Sie brauchen Hilfe Ich habe Json, durch die i-Objekte abrufen müssen, aber nicht in der Lage zu erhalten. Ich habe mehrere Objekte auch zum Abrufen verwendet, aber keinen Erfolg. JSON:

{ 
    "status": 1, 
    "data": [{ 
     "restaurent_id": "1", 
     "user_id": "6", 
     "zone_id": "1", 
     "restaurentAddress": { 
      "restaurent_address_id": "1" 
     }, 
     "restaurentInfo": { 
      "restaurent_info_id": "1", 
      "restaurent_bussiness_owner_name": "Vijay" 
     }, 
     "restaurentSetting": { 
      "restaurent_setting_id": "1", 
      "minimum_purcase": "200", 
      "payment_method_id": "1", 
      "title": "Best Hotel" 
     }, 
     "zone": { 
      "zone_id": "1", 
      "by_zipcode": "1" 
     } 

    }] 
} 

und ich will restaurentAddress und restaurentInfo

MY mainActivity.java Datei

package com.example.premi.jsonlist; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

public class MainActivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     TextView output = (TextView) findViewById(R.id.textView1); 
     String strJson="{\n" + 
       "\t\"status\": 1,\n" + 
       "\t\"data\": [{\n" + 
       "\t\t\"restaurent_id\": \"1\",\n" + 
       "\t\t\"user_id\": \"6\",\n" + 
       "\t\t\"zone_id\": \"1\",\n" + 
       "\t\t\"restaurentAddress\": {\n" + 
       "\t\t\t\"restaurent_address_id\": \"1\"\n" + 
       "\t\t},\n" + 
       "\t\t\"restaurentInfo\": {\n" + 
       "\t\t\t\"restaurent_info_id\": \"1\",\n" + 
       "\t\t\t\"restaurent_bussiness_owner_name\": \"Vijay\"\n" + 
       "\t\t},\n" + 
       "\t\t\"restaurentSetting\": {\n" + 
       "\t\t\t\"restaurent_setting_id\": \"1\",\n" + 
       "\t\t\t\"minimum_purcase\": \"200\",\n" + 
       "\t\t\t\"payment_method_id\": \"1\",\n" + 
       "\t\t\t\"title\": \"Best Hotel\"\n" + 
       "\t\t},\n" + 
       "\t\t\"zone\": {\n" + 
       "\t\t\t\"zone_id\": \"1\",\n" + 
       "\t\t\t\"by_zipcode\": \"1\"\n" + 
       "\t\t}\n" + 
       "\n" + 
       "\t}]\n" + 
       "}"; 
     String dataoutput = ""; 
     try { 
      JSONObject jsonRootObject = new JSONObject(strJson); 

      //Get the instance of JSONArray that contains JSONObjects 
      JSONObject status = jsonRootObject.optJSONObject("status"); 
      JSONArray Dataarray =status.getJSONArray("data"); 

      //Iterate the jsonArray and print the info of JSONObjects 
      for(int i=0; i < Dataarray.length(); i++){ 
       JSONObject jsonObject = Dataarray.getJSONObject(i); 
JSONObject Data = jsonObject.getJSONObject("restaurentAddress"); 

       for(int j = 0 ; j < Data.length(); j++){ 
        JSONObject GetData =Data.getJSONObject(String.valueOf(j)); 
       int id = Integer.parseInt(GetData.getString("restaurent_address_id")); 
       String postcode = GetData.getString("postcode"); 
       String addresss = GetData.getString("restaurent_address"); 


       dataoutput += " : \n id= "+ id +" \n postcode= "+ postcode +" \n address= "+ addresss +" \n "; 
      }} 
      output.setText(dataoutput); 
     } catch (JSONException e) {e.printStackTrace();} 
    } 
} 
+3

, was ist das Problem? irgendein Stacktrace? –

+0

07-03 03: 54: 08.988 2987-2987/com.example.premi.jsonlist E/dalvikvm: Konnte die Klasse 'android.os.PersistableBundle' nicht finden, die von der Methode com.example.premi.jsonlist.MainActivity.access referenziert wurde $ super –

Antwort

2

Probieren Sie dies aus holen:

try { 
    JSONObject object = (JSONObject) new JSONTokener(YOUR_JSON_STRING).nextValue(); 
    String restaurentAddressId = object.getJSONArray("data").getJSONObject(0).getJSONObject("restaurentAddress").getString("restaurent_address_id"); 
    String restaurentInfoId = object.getJSONArray("data").getJSONObject(1).getJSONObject("restaurentInfo").getString("restaurent_info_id"); 
    String restaurentBizOwnerName = object.getJSONArray("data").getJSONObject(1).getJSONObject("restaurentInfo").getString("restaurent_business_owner_name"); 

} 
catch (JSONException e) { 
} 
+0

07-03 04: 09: 21.584 30798-30798/com.beispiel.premi.jsonlist E/Trace: Fehler beim Öffnen der Tracedatei: Keine solche Datei oder Verzeichnis (2) 07-03 04: 09: 21.616 30798- 30798/com.example.premi.jsonlist E/dalvikvm: Konnte die Klasse 'android.util.ArrayMap' nicht finden, auf die von der Methode com.android.tools.fd.runtime.MonkeyPatcher.monkeyPatchExistingResources verwiesen wird –

+0

Es scheint, als ob Sie versuchen zu verwenden eine Methode aus einer API-Ebene, API 19 für ArrayMap, die von dem Gerät, auf dem Sie sie testen, nicht unterstützt wird. Ich bin nicht mit diesem Problem vertraut, aber überprüfen Sie http://StackOverflow.com/questions/36812913/dalvikvm-could-not-find-class-android und http://StackOverflow.com/questions/36930200/could-not -find-class-android-app-applicationonprovideassistdatalistener –

+0

Ich brauche noch eine Hilfe, wenn ich json lokal pasieren will, funktioniert es und wenn ich als API (URL) verwende, gibt es einen Fehler, der zeigt, dass er leer ist ... was wird der Grund sein? ist ihre Möglichkeit, zuerst json lokal speichern und dann abrufen? –

1

Sein Getan habe ich versucht, diese

try { 
     JSONObject jsonRootObject = new JSONObject(strJson); 

     //Get the instance of JSONArray that contains JSONObjects 
     JSONArray mainnode =jsonRootObject.getJSONArray("data"); 

     //Iterate the jsonArray and print the info of JSONObjects 
     for(int i=0; i < mainnode.length(); i++){ 
      JSONObject jsonObject = mainnode.getJSONObject(i); 
      JSONObject Data = jsonObject.getJSONObject("restaurentInfo"); 
       int id = Integer.parseInt(Data.getString("restaurent_info_id")); 
       String postcode = Data.getString("restaurent_phone_number"); 
       String addresss = Data.getString("restaurent_bussiness_owner_name"); 


       dataoutput += " : \n restaurent_id= "+ id +" \n restaurent_info_id= "+ postcode +" \n restaurent_address_id= "+ addresss +" \n "; 

     } 
     output.setText(dataoutput); 
    } catch (JSONException e) {e.printStackTrace();} 
} 

ich nur entfernt Statusobjekt

und eine andere für Schleife Danke für die Hilfe von Ihnen wenig Hilfe Got :)

+0

Kein Problem, froh, dass Sie es herausgefunden haben! :) –