2016-12-15 1 views
-2

Ich habe gerade mit der Android-Entwicklung begonnen und ich stehe vor einem Problem, das ich nicht lösen kann.Stuck Umwandlung von String in JSON

nenne ich eine API in meiner android app Volley und ich erhalte die folgende Antwort:

[ 
    { 
    "id": 25, 
    "user_id": 39, 
    "positionX": "51.4595484", 
    "positionY": "5.4757402", 
    "modified": "2016-12-15T00:00:00" 
    }, 
    { 
    "id": 26, 
    "user_id": 40, 
    "positionX": "51.4595518", 
    "positionY": "5.4757409", 
    "modified": "2016-12-15T00:00:00" 
    }, 
    { 
    "id": 27, 
    "user_id": 41, 
    "positionX": "51.459554", 
    "positionY": "5.4757413", 
    "modified": "2016-12-15T00:00:00" 
    }, 
    { 
    "id": 28, 
    "user_id": 42, 
    "positionX": "51.459554", 
    "positionY": "5.4757413", 
    "modified": "2016-12-15T00:00:00" 
    } 
] 

Ich versuche, Daten zu holen aus JSONArray, aber ich kann es nicht ... funktioniert Dies ist mein Code:

@Override 
public void onResponse(String response) { 
    try { 
     JSONArray jsonArray = new JSONArray(response); 
     JSONObject jsonObject = jsonArray.getJSONObject(0); 

     for (int i = 0; i < jsonObject.length(); i++) { 
      JSONObject row = jsonObject.getJSONObject(); 
      points.add(new LatLng(row.getDouble("positionX"),row.getDouble("positionY"))); 
     } 
     Toast.makeText(getApplicationContext(), "Updated users info." + points.get(0).toString(), Toast.LENGTH_LONG).show(); 
    } catch (JSONException e) { 
     Toast.makeText(getApplicationContext(), "error" + e.getMessage(), Toast.LENGTH_LONG).show(); 
    } 
} 
+0

definieren * aber ich kann es nicht funktionieren lassen * auch * Ich stehe vor einem Problem, das ich nicht lösen kann. * Welches Problem? – Selvin

+1

auch, würden Sie wahrscheinlich profitieren von der Verwendung von 'Gson' Bibliothek –

+0

Bitte lesen [diese (wie Sie fragen)] (http://stackoverflow.com/help/how-to-ask) und [this (mcve) ] (http://stackoverflow.com/help/mcve), bevor Sie fragen, , da diese Ihnen helfen werden, mehr und bessere Antworten von der Gemeinschaft zu erhalten. – Bonatti

Antwort

1

Sie müssen einfach Ihre row von JSONArray anstatt zuerst JSON so einfach diese

tun Objekt holen Erstellen

1.) Ihr JSONAray

2.) Traverse Array und holen JSONObject Index mit

3.) holen die Daten aus JSONObject, die während der zweiten Stufe

JSONArray jsonArray = new JSONArray(response); 

    for (int i = 0; i < jsonArray.length(); i++) { 
     JSONObject row = jsonArray.getJSONObject(i); 
     points.add(new LatLng(row.getDouble("positionX"),row.getDouble("positionY"))); 
     } 

Improvement abgerufen wurde Um Ausnahmen bei fehlenden Schlüsseln und Werten zu vermeiden, verwenden Sie optDouble, die mit fehlenden Werten oder Werten in Form von Strings umgehen können.

+0

Hey, wenn ich versuche, Ihren Code zu verwenden, stürzt meine Anwendung ab. Ich erhalte den folgenden Fehler: java.lang.NullPointerException: Versuch, die Interface-Methode 'boolean java.util.List.add (java.lang.Object)' auf einem Nullobjekt Referenz – Barteo

+0

@Barteo Sie haben einfach vergessen zu initialisieren Ihre 'Punkte'-Liste, bevor Sie es verwenden, so sollte es sein' Punkte = neue ArrayList (); 'Sie können es innerhalb' oncreate' tun oder stellen Sie sicher, es vor dieser Schleife zu tun –

+1

Es funktioniert jetzt ... Vielen Dank für Hilfe! – Barteo

0

Probieren Sie diese

@Override 
        public void onResponse(String response) { 
         try { 
          JSONArray jsonArray = new JSONArray(response); 

          for (int i = 0; i < jsonArray.length(); i++) { 
           JSONObject row= jsonArray.getJSONObject(i)        
           points.add(new LatLng(row.getDouble("positionX"),row.getDouble("positionY"))); 
          } 
          Toast.makeText(getApplicationContext(), "Updated users info." + points.get(0).toString(), Toast.LENGTH_LONG).show(); 
         } catch (JSONException e) { 
          Toast.makeText(getApplicationContext(), "error" + e.getMessage(), Toast.LENGTH_LONG).show(); 
         } 
        } 

Aber ich schlage vor, Sie verwenden Gson Bibliothek json zu analysieren ist es am besten im Geschäft

Herunterladen - http://www.java2s.com/Code/Jar/g/Downloadgson222jar.htm

Wie lib Android Studio: Add jar as library?

hinzufügen

Wie man es benutzt - https://blog.ajduke.in/2013/07/28/getting-started-with-google-gson/ Oder https://sites.google.com/site/gson/gson-user-guide#TOC-Primitives-Examples