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应该足够了,迭代器将处理它是否为空。