2017-03-14 2 views
1

Ich bin ein wenig Probleme, mit, wie die folgenden Daten zu analysieren:JSON Parsen: Ein Schlüssel, mehrere Werte

[{ 
    "Name": "EB DAVIE ST FS HOWE ST", 
    "Latitude": 49.27755, 
    "Longitude": -123.12698, 
    "Routes": "006, C23" }] 

Ich möchte alle Werte erhalten von „Routes“. Dann möchte ich eine neue "Route" von jeder Saite erstellen und jede "Route" in einem Set speichern. Aber ich bin mir nicht sicher, wie ich darüber iterieren kann. (für dieses Beispiel können wir einfach sagen, dass jede Route nur einen Namen hat).

Bisher habe ich:

 JSONObject stop = allStops.getJSONObject(i); 
     JSONArray array = stop.getJSONArray("Routes"); 

     for(int i = 0; i < array.length(); i++) { 
     Route r = new Route(array.get(i)) // i thought (array.get(i)) would give you the String of each value (e.g. "006") 
     Set<Route> routes = new HashSet<Route>(); 
     routes.add(array.get(i)); // then I thought I should just add each route 
} 

aber das funktioniert nicht. Ich bin mir nicht sicher, was ich tun soll.

+0

Mir scheint, dass Routen ist kein JsonArray sondern ein Komma getrennte Zeichenfolge –

+0

Also dann, was ich in diesem Fall tun? (Sorry, ich bin neu beim Parsen von JSON, also bitte etwas Anleitung) – user7696456

Antwort

0
String routes = stop.getString("Routes"); 
String[] split_routes = routes.split(", "); /*all routes will be stored in this array*/ 
+0

Könnte in Betracht ziehen, 'optString' anstelle von 'getString' zu verwenden, wenn Routen ein optionaler Wert ist –

0

können Sie nutzen com.alibaba.fastjson.JSON versuchen, eine Java-Klasse definieren, dann wie folgt aus:

List<MyClass> list= JSON.parseObject(jsonStr, new TypeReference<List<MyClass>>() {}); 
0

ich Ihren Code nur verändert, wird dies Ihre angegebene JSON-Format zu analysieren,

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

public class JsonParser { 

    public static void main(String[] args) throws Exception { 

     String jsonString = "[{\"Name\":\"EB DAVIE ST FS HOWE ST\",\"Latitude\":49.27755,\"Longitude\":-123.12698,\"Routes\":\"006, C23\"}]"; 
     JSONArray arrayObject = new JSONArray(jsonString); 
     JSONObject inner = arrayObject.getJSONObject(0); 
     String[] keys = JSONObject.getNames(inner); 

     for(String entry : keys) { 
      System.out.println(entry+" : "+inner.get(entry)); 
     } 

    } 
} 
  • Zunächst konvertieren wir die jSON-String zu JSONArray Objekt.
  • Dann analysieren wir das JSONObject von JSONArray. Hier haben wir nur ein JSONObject, also haben wir getJSONObject(0) verwendet. Wenn Sie mehr als ein JSONObject haben, können Sie die Werte mithilfe einer Schleife iterieren.
  • Dann speichern wir alle Schlüsselwerte innerhalb des JSONObject in einem String Array.
  • Schließlich wiederholen wir die Werte für die Schlüssel.

Ausgang:

Latitude : 49.27755 
Routes : 006, C23 
Longitude : -123.12698 
Name : EB DAVIE ST FS HOWE ST 
Verwandte Themen