Ich fange gerade erst an, json mit Java zu verwenden. Ich bin nicht sicher, wie ich auf Zeichenfolgenwerte in einem JSONArray zugreifen soll. Zum Beispiel sieht mein json so aus:
{
"locations": {
"record": [
{
"id": 8817,
"loc": "NEW YORK CITY"
},
{
"id": 2873,
"loc": "UNITED STATES"
},
{
"id": 1501
"loc": "NEW YORK STATE"
}
]
}
}
Mein Code:
JSONObject req = new JSONObject(join(loadStrings(data.json),""));
JSONObject locs = req.getJSONObject("locations");
JSONArray recs = locs.getJSONArray("record");
Ich habe zu diesem Zeitpunkt Zugriff auf das JSONArray "record", bin mir jedoch nicht sicher, wie ich die Werte "id" und "loc" in einer for-Schleife erhalten soll. Entschuldigung, wenn diese Beschreibung nicht zu klar ist, bin ich ein bisschen neu in der Programmierung.
Antworten:
Haben Sie versucht, JSONArray.getJSONObject (int) und JSONArray.length () zu verwenden, um Ihre for-Schleife zu erstellen:
quelle
id
mit einem Sinple erhalten können,getInt
wie wir den Wert einer Hashmap durch Angabe des Schlüssels erhalten, warum müssen wir dann mit einer for-Schleife iterieren? Wird dieid
Get- Iteration mit der Schleife nichtint id
mehrmals zugewiesen ?Ein org.json.JSONArray ist nicht iterierbar.
So verarbeite ich Elemente in einem net.sf.json.JSONArray :
Funktioniert super... :)
quelle
JSONArray
nicht iterierbar ist.Java 8 ist nach fast zwei Jahrzehnten auf dem Markt. Im Folgenden wird beschrieben, wie Sie
org.json.JSONArray
mit der Java8 Stream-API iterieren können.Wenn die Iteration nur einmal erfolgt (keine Notwendigkeit
.collect
)quelle
.mapToObj
zeigt "unbehandelte Ausnahme: JSONException".mapToObj(index -> (JSONObject) array.get(index))
gibt es solche,jsonArray.get(index)
die möglicherweise werfen können,JSONException
aberJSONException extends RuntimeException
so sollte es zumindest zur Kompilierungszeit inWenn Sie sich Ihren Code ansehen, spüren Sie, dass Sie JSONLIB verwenden. Wenn dies der Fall war, sehen Sie sich das folgende Snippet an, um das JSON-Array in ein Java-Array zu konvertieren.
quelle
Falls es jemand anderem hilft, konnte ich auf diese Weise in ein Array konvertieren.
... oder Sie sollten in der Lage sein, die Länge zu bekommen
quelle
org.json.JSONObject
hat einetoJSONArray(JSONArray names)
Methode undorg.json.JSONArray
hat einetoJSONObject(JSONArray names)
Methode, aber es hat keinetoArray()
Methode.HashMap regs = (HashMap) parser.parse (stringjson);
(String) (( HashMap ) regs.get ("firstlevelkey")). Get ("secondlevelkey");
quelle