0

Mongo DB から抽出した JSONObject を解析しています。ドキュメントによると、数値は java.lang.number オブジェクトにマップされますが、次の宣言をしようとすると、具体的には最初の でエラーが発生しますSystem.out.println(value.floatVlaue())

    //For data
    int counter = 0;
    float score = 0;
    Number value = 0;

    while(cur.hasNext()){
        JSONObject jsonObj = (JSONObject) JSONValue.parse(cur.next().toString());
        metricsIterator = ((JSONObject)((JSONObject)((JSONObject)((JSONObject)jsonObj.get("level_1")).get("level_2")).get("level_3")).get("metrics")).keySet().iterator();

        while(metricsIterator.hasNext()){
            System.out.println(metricsIterator.next().toString());
            value = (Number) jsonObj.get(metricsIterator.next());

            System.out.println(value.floatValue());

            System.out.println(value.toString());

            someLogic(value.doubleValue(), ((Number)jsonObj.get("long")).intValue(), start, end, days);
        }
    }

問題の行は間違いなくvalue = (Number) jsonObj.get(metrics Iterator.next())

Json imの解析は次のようになります

    { "_id" : "9223370663181869423_cnn_1" , 
    "long" : 1373672925000 , 
    "level_1" : 
            { "level_2" : 
                { "level_3level" : 
                    { "metrics" : 
                          {"key1" : 0.003333333333333334 , 
                          "key2" : 0.005833333333333334 , 
                          "key3" : 0.005833333333333334 , 
                          "key4" : 0.009166666666666667 , 
                          "key5" : 0.1391666666666667 , 
                          "key6" : 0.1241666666666667 , 
                          "key7" : 0.01666666666666667
                           }
                     }
                 }
            }
    }

助けてくれてありがとう!

4

2 に答える 2

0

metricsIterator. next() を2回実行しています

最初: System.out.println(metricsIterator.next().toString()); 2番目: 値 = (数値) jsonObj.get(metricsIterator.next());

その後、 hasNext() かどうかを確認せずに最後に到達します

于 2013-07-28T07:23:32.430 に答える