2016-04-25 15 views
0

Hier ist meine JSON-Datei:Wie wählt man JSON mit Ergebnissen?

{ 
    "server_response": [{ 
     "bmw": "", 
     "mercedes": "", 
     "honda": "civic", 
     "toyota": "corolla", 
     "gmc": "", 
     "chevy": "" 
    }] 
} 

Hier ist mein Android-Code:

try { 
       JSONObject jsonResponse = new JSONObject(JSON_STRING); 
       JSONArray jsonMainNode = jsonResponse.optJSONArray("server_response"); 

       for (int i = 0; i < jsonMainNode.length(); i++) { 
        JSONObject jsonChildNode = jsonMainNode.getJSONObject(i); 
//this is the problem here. How can I get JSON that has a result like Honda and Toyota? 
        {variable name} = jsonChildNode.optString("{problem is here}"); 
        CarsModel carsModel new CarsModel({variable name} {variable name}); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

Das Problem im Android-Code ist wie Sie sehen können. Ich möchte, dass es nur die JSON, die ist nicht leer, zum Beispiel Honda und Toyota.

Wie kann ersetzen {Variablenname} mit in diesem Fall, Honda und dann ersetzen {Problem ist hier} mit dem JSON-Ergebnis, das nicht leer ist?

Ich möchte auch die {Variablennamen} in CarsModel carsModel new CarsModel({variable name} {variable name}); hinzufügen.

+1

Schleife auf server_response, überspringen alle leeren Werte ... –

+0

@MarcB Wie kann ich das tun? – johnny880

Antwort

0
for (int i = 0; i < jsonMainNode.length(); i++) { 
    JSONObject jsonChildNode = jsonMainNode.getJSONObject(i); 
    // Get the keys in the JSON object 
    Iterator<?> keys = jsonChildNode.keys(); 
    while (keys.hasNext()) { 
     // Get the key 
     String key = (String)keys.next(); 
     String objValue = jsonChildNode.getString(key); 
     // check if empty 
     if (!objValue.isEmpty()) { 
      CarsModel carsModel new CarsModel(objValue); 
     } 
    } 
} 
+0

Setze ich das in die for-Schleife? – johnny880

+0

Platzieren Sie diesen Code anstelle der 'for-Schleife' – Exaqt

+0

jsonMainNode.keys(); kann die Methode "keys()" nicht auflösen – johnny880

0

Dies ist, was Sie tun müssen. Die Daten, die Sie wollen, ist ein JSON-Objekt in einem jsonArray

JSONObject jsonResponse = new JSONObject(JSON_STRING); 
      JSONArray jsonMainNode = jsonResponse.optJSONArray("server_response"); 

      for (int i = 0; i < jsonMainNode.length(); i++) { 
       JSONObject jsonChildNode = jsonMainNode.getJSONObject(i); 
       variableX = jsonChildNode.getString("toyota"); 
       variableY = jsonChildNode.getString("honda"); 
       variableZ = jsonChildNode.getString("xyz"); 

//    CarsModel thing using var x, y, z... 
      } 
+0

Da die Server-Antwort im Array ist, müssen Sie eine Schleife ausführen, um auf alle Werte zuzugreifen – drulabs