2017-09-09 4 views
0

Ich habe diese JSON Struktur:Lese JSON von Java

{"metrics":[{ 
     "type": "sum", 
     "column": ["rsales", "nsales"] 
    }, 
    { 
     "type":"count", 
     "column":["ptype", "plan"] 
    }] 
} 

ich das JSON von Java zu lesen versuchen und will die Ausgabe wie zu sein:

str_sum="Sum" 
str_sum_array[]= {"rsales" ,"nsales"} 
str_count="count" 
str_count_array[]= {"ptype" ,"plan"} 

Hier ist mein Code so weit:

JSONArray jsonArray_Metric = (JSONArray) queryType.get("metrics"); 
for (int i = 0; i < jsonArray_Metric.length(); i++) { 
JSONObject json_Metric = jsonArray_Metric.getJSONObject(i); 
Iterator<String> keys_Metrict = json_Metric.keys(); 
while (keys_Metrict.hasNext()) { 
    String key_Metric = keys_Metrict.next(); 
    // plz help 
    } 
} 

Wie kann ich den Code vervollständigen, um die gewünschte Ausgabe zu produzieren?

+1

Es ist normalerweise am einfachsten, Java-Modellklassen zu schreiben und Jackson für die Serialisierung/Deserialisierung zu verwenden. – EvanM

Antwort

1

Statt iterator von verwenden, können Sie einfach for-loop verwenden, wie unten ..

JSONParser parser = new JSONParser(); 
JSONObject object = (JSONObject) parser.parse(queryType); 
JSONArray jsonArray_Metric = (JSONArray) object.get("metrics"); 
for (int index = 0; index < jsonArray_Metric.size(); index++) { 
    JSONObject item = (JSONObject) jsonArray_Metric.get(index); 
    String type = (String) item.get("type"); 
    JSONArray column = (JSONArray) item.get("column"); 
    System.out.println("str_sum store=\"" + type + "\""); 
    System.out.println("str_count_array[] store=" + column); 
} 

Sample Run

str_sum store="sum" 
str_count_array[] store=["rsales","nsales"] 
str_sum store="count" 
str_count_array[] store=["ptype","plan"] 

Wenn Sie JSONArray mit geschweiften Klammern statt standardmäßig angezeigt werden (Ist) Zahnspange also eckige geschweifte Klammern dann könntest du so etwas während des Druckens haben oder du kannst sie sogar löschen, indem du sie durch leere Zeichenfolge "" ersetzt.

System.out.println("str_count_array[] store " + column.toString().replace("[", "{").replace("]", "}")); 

Sie können Ihre Anzeige Code formatieren, wie Sie durch das Spiel mit println Aussage mögen.

+0

Leider könnte ich nicht mit dem Ausgang klar mag ich! Soll str_sum = "Summe" str_sum_array [] = seine "rsales, nsales" str_count = "count" str_count_array [] = "ptype, plan" – ManuV

+0

aktualisierte meinen Beitrag mit Details und Beispiel ausführen – JRG

+0

erste Variable str_sum stroe "sum" zweites Array str_sum_array [] sollte speichern = "rsales, nsales" dritte Variable str_count speichern "count" und schließlich vierte str_count_array [] sollte "ptyp, plan" – ManuV