iç içe Aşağıdaki JSON var: Ben ayrıştırmak için aşağıdaki kodu kullanıyorumAyrıştırma 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"
}
}
:
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);
}
Bu iyi çalışır ve o konumu haricinde tüm değerleri yazdırmak başka bir yuvalanma seviyesi. Ben json.get ("konum") geçmek için yukarıdaki kodu aynı hile çalıştı ama bu çalışmaz. Lütfen konum için nasıl çalışacağınızı önerin.
public static void printAll(JsonNode node) {
Iterator<String> fieldNames = node.getFieldNames();
while(fieldNames.hasNext()){
String fieldName = fieldNames.next();
JsonNode fieldValue = node.get(fieldName);
if (fieldValue.isObject()) {
System.out.println(fieldName + " :");
printAll(fieldValue);
} else {
String value = fieldValue.asText();
System.out.println(fieldName + " : " + value);
}
}
}
Böylece, bir nesne ulaştığında, böyle location
olarak, özyinelemeli printAll
arayacağım tüm yazdırmak için:
"Çalışmıyor" ile ne demek istiyorsun, bir hata mesajı alıyor musunuz? Eğer öyleyse, ne diyor? –
Sadece açık olmak için yukarıdaki kod düzgün çalışıyor. ama konum alanı için aynı mantığı uygulamaya çalıştığımda, o zaman location_fields.getFieldNames() satırı, boş gösterici istisnası atar. Eminim ilk satırdaki "konum" doğru ismini geçiyorum eminim – Vik