java - 解析 JSON 对象但遇到 NullPointerException

标签 java mongodb parsing nullpointerexception json

我正在解析从 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 看起来像这样

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

非常感谢您的帮助!

最佳答案

迭代器只能被遍历一次。这意味着一旦你这样做 metricsIterator.next()System.out.println(metricsIterator.next().toString()); ,当您调用 .next() 时,您最终会用完该值。再次在 value = (Number) jsonObj.get(metricsIterator.next());您得到的值是您期望的值之后的值,换句话说,您跳过了一个值。 因此,当您命中最后一个值时,下一个值将为 null,从而导致空指针。 尝试在赋值之前删除 sysout,它应该可以解决空指针问题。

关于java - 解析 JSON 对象但遇到 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17905538/

相关文章:

java - 使数组的元素为空

javascript - 如何通过字段值 mongodb 唯一搜索字段?

javascript - 获取 MongoDB 中数组属性值的计数

java - 错误org.springframework.beans.factory.BeanCreationException : Error creating bean Spring Boot

java - Sonarqube 插件矩阵显示 LTS 6.7.2 有 SonarJava 5.1.1,但似乎没有

node.js - 无法通过express项目连接到mongodb

c - 解析带有第一个和最后一个单词标记的字符串(在 C 中)

perl - 在语法中分离 G0 和 G1 规则的问题

c# - C 和 C# 中的字符串解析器

java - protobuf RPC结构(嵌入式ARM)