2016-06-27 17 views
0

Ich versuche, Json-Datei zu lesen und zu analysieren;JsonObject füllt Tabelle nicht korrekt

JSONArray hops = (JSONArray) jsonObject.get("hops"); 
if (hops != null) { 
    Iterator<JSONObject> iterator = hops.iterator(); 

    while (iterator.hasNext()) { 
     JSONObject itr = iterator.next(); 

     rtt += (double) itr.get("rtt"); 
     reply_ttl += (double) itr.get("reply_rtt"); 
     probe_ttl += (long) itr.get("probe_ttl"); 
    } 
    rtt = rtt/(hopCount * 2); 
    reply_ttl = (int) (reply_ttl/hopCount); 
    probe_ttl = (int) (probe_ttl/hopCount);    
} 

kann ich rtt korrekt aber NullPointerException Renditen für reply_ttl und probe_ttl Werte. Während des Debuggens kann ich sehen, dass itr alle Attribute enthält, die die Datei hat;

{ 
    "icmp_type": 11, 
    "probe_id": 1, 
    "icmp_q_ipl": 44, 
    "reply_tos": 192, 
    "reply_ipid": 9760, 
    "icmp_q_ttl": 1, 
    "rtt": 0.264, 
    "reply_size": 56, 
    "probe_size": 44, 
    "icmp_code": 0, 
    "icmp_q_tos": 0, 
    "addr": "193.1.31.125", 
    "probe_ttl": 1, 
    "reply_ttl": 255 
} 

Aber wenn ich mir die HashMap Werte sucht itr werden nur 9 Attribute in den Tisch zu legen. Warum werden alle Json-Knoten nicht in die Tabelle aufgenommen?

+0

Sie müssen die vollständige JSON-Struktur angeben, um das Problem hier zu überprüfen. Als @Greg Zero erwähnt "reply_rtt" ist nicht da. –

Antwort

1

Es sieht aus wie könnte es ein Tippfehler hier:

reply_ttl += (double) itr.get("reply_rtt"); 

Sie sind an der Unterseite für den Schlüssel „reply_rtt“, aber in der Spezifikation überprüfen, gibt es keinen Schlüssel mit diesem Namen. Wird hier die Ausnahme ausgelöst?

Wenn das Ihr Problem nicht löst, können Sie Ihrer Frage mehr Kontext hinzufügen? Ist das die org.json-Bibliothek? Es wäre hilfreich, den Inhalt von jsonObject zu sehen, wo das "Hops" -Objekt gefunden wird und wie die anderen Variablen deklariert werden.

Über die fehlenden Werte ist es möglich, dass diese JSON-Bibliothek keine Nullwerte in ihre interne HashMap einfügt. Wenn Sie beispielsweise die Zeichenfolge "{\"key\":null}" lesen, erhalten Sie möglicherweise nur eine leere Map.

Verwandte Themen