2016-04-01 19 views
3

kullanarak Java bir JSON dosyası Ayrıştırma:json-basit bir .json dosyası oluşturduk

{ 
    "numbers": [ 
    { 
     "natural": "10", 
     "integer": "-1", 
     "real": "3.14159265", 
     "complex": { 
     "real": 10, 
     "imaginary": 2 
     }, 
     "EOF": "yes" 
    } 
    ] 
} 

ve ben "doğal" içeriğini ayıklamak için, Json Basit kullanarak ayrıştırmak istiyor ve "hayali".

Bu defa yazdım budur:

JSONParser parser = new JSONParser(); 
Object obj = parser.parse(new FileReader("...")); //the location of the file 
JSONObject jsonObject = (JSONObject) obj; 
String natural = (String) jsonObject.get("natural"); 
System.out.println(natural); 

sorun Doğal olanın değeri "sıfır" değil "10" olmasıdır. JsonObject.get ("imaginary") yazarken aynı şey olur.

Birçok web sitesine baktım (StackOverflow dahil), çoğu insanın yazdığı gibi takip ettim, ancak bu sorunu çözemiyorum.

cevap

3

Önce dizide JSONObject bulmanız gerekiyor. Sadece numbers alanını içeren null alanını içeren üst düzey JSONObject alanının alanını bulmaya çalışıyorsunuz çünkü null'u bulamıyor çünkü natural bulamıyor.

Bunu düzeltmek için önce numara dizisini almalısınız.

yerine bu deneyin:

JSONParser parser = new JSONParser(); 
Object obj = parser.parse(new FileReader("...")); //the location of the file 
JSONObject jsonObject = (JSONObject) obj; 
JSONArray numbers = (JSONArray) jsonObject.get("numbers"); 

for (Object number : numbers) { 
    JSONObject jsonNumber = (JSONObject) number; 
    String natural = (String) jsonNumber.get("natural"); 
    System.out.println(natural); 
} 
+0

teşekkür ederiz! Bunu saatlerce bekliyorum! – George

+0

"Hayali" hakkında ne dersiniz? Başka bir JSONArray kompleksi = (JSONArray) jsonObject.get ("imaginary") yapmalı mıyım? For döngüsünde for döngüsünde yazdınız mı? – George

+1

"Hayali" alanı jsonNumber.get ("imaginary") öğesini doğal olarak aynı döngüde arayarak alabilirsiniz. –

1

Dosyanızdaki nesnenin tam olarak numbers adlı bir özelliği vardır.
natural özelliği yoktur.

Bu dizinin içindeki nesneleri incelemek isteyebilirsiniz.

İlgili konular