Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 迭代器在JSONArray空值内抛出NullPointerException_Java_Json_Arrays - Fatal编程技术网

Java 迭代器在JSONArray空值内抛出NullPointerException

Java 迭代器在JSONArray空值内抛出NullPointerException,java,json,arrays,Java,Json,Arrays,我正在尝试使用以下代码从JSON文件中读取数据: FileReader reader = new FileReader(file); JSONParser jsonParser = new JSONParser(); JSONObject jsonObject = (JSONObject) jsonParser.parse(reader); JSONArray dataName = (JSONArray)jsonObject.get("results"); Iterator it = dataN

我正在尝试使用以下代码从
JSON
文件中读取数据:

FileReader reader = new FileReader(file);
JSONParser jsonParser = new JSONParser();
JSONObject jsonObject = (JSONObject) jsonParser.parse(reader);
JSONArray dataName = (JSONArray)jsonObject.get("results");
Iterator it = dataName.iterator();

while (it.hasNext()) {
    JSONObject out = (JSONObject) it.next();
    System.out.printf("Game name: " + out.get("name") + " in plataforms:");
    JSONArray data_plat = (JSONArray) out.get("platforms");

    if (!data_plat.isEmpty()) {
        Iterator it2 = data_plat.iterator();

        while (it2.hasNext()) {
            System.out.printf("I AM HERE");
            JSONObject out_plat = (JSONObject) it2.next();
            System.out.printf("\n- " + out_plat.get("name"));
        } 
    }
}
这段代码在这段代码中抛出了一个
NullPointerException

if (!dataPlat.isEmpty());
我分析了我的输出和
JSON
文件,这是因为我正在读取的部分包含空值。我怎样才能避免这种情况

编辑:这是我的
JSON
的一部分:

{
    "name":"FIFA Manager 08",
    "platforms":[
        {
            "api_detail_url":"http:\/\/www.giantbomb.com\/api\/platform\/3045-94\/",
            "id":94,
            "name":"PC",
            "site_detail_url":"http:\/\/www.giantbomb.com\/pc\/3045-94\/",
            "abbreviation":"PC"
        }
    ],
    "resource_type":"game"
},
{
    "name":"FIFA Online 2",
    "platforms":null,
    "resource_type":"game"
},

错误发生在
“平台”的底部:空

NPE不可能发生。NPE将在
发生!data_plat.isEmpty()
。请显示您的json(如果不是太大)如果(dataPlat!=null&&!dataPlat.isEmpty()),您是否尝试过
?我觉得自己很笨。我试过了=null和isEmpty()各自独立,但决不能两者兼而有之。。现在它可以工作了。有什么解释吗?只需使用
!=null应该足够了,迭代器将处理它是否为空。