2016-06-27 14 views
0

Jsonファイルを読み込んで解析しようとしています。JsonObjectで表が正しく入力されない

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);    
} 

私はreply_ttlprobe_ttl値に対するrtt正しくなく、NullPointerExceptionリターンを取ることができます。デバッグ中は、ファイルにあるすべての属性がitrに含まれていることがわかります。

{ 
    "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 
} 

しかし、私はitrためのHashMapの値を見ると、わずか9の属性は、テーブルに置かれています。なぜすべてのJsonノードがテーブルに入れられないのですか?

+0

ここで問題を確認するには、完全なJSON構造を指定する必要があります。 @グレッグゼロは "reply_rtt"はそこにはないと述べた。 –

答えて

1

は、それはここにタイプミスがあるかもしれませんようになっています

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

あなたがキー「reply_rtt」をチェックされていますが、一番下のスペックで、その名前のキーはありません。これはどこに例外がスローされますか?

これで問題が解決しない場合は、質問にコンテキストを追加できますか?これはorg.jsonライブラリですか? jsonObjectの内容を見て、 "ホップ"オブジェクトが見つかった場合、他の変数がどのように宣言されているかを確認すると役に立ちます。

欠落している値については、このJSONライブラリはnull値を内部HashMapに入れない可能性があります。例えば、文字列"{\"key\":null}"を読むと、空のマップが得られるだけです。

関連する問題