Parsen von verschachtelten JSON
Habe ich folgenden JSON:
{
"registration": {
"name": "Vik Kumar",
"first_name": "Vik",
"last_name": "Kumar",
"bloodGroup": "B-",
"gender": "male",
"birthday": "10\/31\/1983",
"email": "vik.ceo\u0040gmail.com",
"cellPhone": "1234123456",
"homePhone": "1234123457",
"officePhone": "1234123458",
"primaryAddress": "jdfjfgj",
"area": "jfdjdfj",
"location": {
"name": "Redwood Shores, California",
"id": 103107903062719
},
"subscribe": true,
"eyePledge": false,
"reference": "fgfgfgfg"
}
}
Ich bin mit dem folgenden code zu analysieren:
JsonNode json = new ObjectMapper().readTree(jsonString);
JsonNode registration_fields = json.get("registration");
Iterator<String> fieldNames = registration_fields.getFieldNames();
while(fieldNames.hasNext()){
String fieldName = fieldNames.next();
String fieldValue = registration_fields.get(fieldName).asText();
System.out.println(fieldName+" : "+fieldValue);
}
Dies funktioniert gut und es drucken Sie alle Werte, außer für die Lage, die Art von einer anderen Ebene verschachteln. Ich versuchte den gleichen trick wie oben-code zu json übergeben.get("location") aber das funktioniert nicht. Bitte vorschlagen, wie es funktionieren für die Lage.
- Was meinst du mit "funktioniert nicht", bekommen Sie eine Fehlermeldung? Wenn ja, was sagt es?
- Nur um klar sein, der obige code funktioniert einwandfrei. aber wenn ich versuche die gleiche Logik für das Feld " Ort " dann die Zeile location_fields.getFieldNames() wirft eine null-Zeiger-Ausnahme. Ich bin sicher, ich bin die Weitergabe der richtige name ist "location" in der ersten Zeile
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie erkennen, wenn Sie es mit einem (geschachtelten)
Object
mitJsonNode#isObject
:So, wenn Sie in ein Objekt, wie
location
Sie nennen dieprintAll
rekursiv drucken alle seine innere Werte.Seit
location
geschachtelt istregistration
verwenden, benötigen Sie:um es zu bekommen. Aber ist es nicht bereits verarbeitet von der while-Schleife, warum Sie brauchen, um es separat?
location
. Da es ein Objekt, dessen text ist der Wert leer.