Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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
“线程中的异常”;“主要”;使用JSON文件时发生java.util.NoSuchElementException_Java_Json - Fatal编程技术网

“线程中的异常”;“主要”;使用JSON文件时发生java.util.NoSuchElementException

“线程中的异常”;“主要”;使用JSON文件时发生java.util.NoSuchElementException,java,json,Java,Json,这是我的密码: import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import java.io.FileReader; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; pu

这是我的密码:

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

import java.io.FileReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class handleRoomJSON{

    public static void runRoomJSON() throws Exception{
        Object obj = new JSONParser().parse(new FileReader("rooms.json"));

        JSONObject jObj = (JSONObject) obj;
        JSONArray jArray = (JSONArray) jObj.get("Rooms");

        Iterator itr = jArray.iterator();
        while (itr.hasNext()){
            JSONObject roomObj = (JSONObject) itr.next();
            String roomType = (String) roomObj.get("roomType");

            JSONArray dimArray = (JSONArray) roomObj.get("roomDimension");
            Iterator itrDim = dimArray.iterator();
            Iterator itrType;
            List<String> tmpList = new ArrayList<String>();
            while (itrDim.hasNext()) {
                System.out.println(itrDim.next());
                itrType = ((Map) itrDim.next()).entrySet().iterator();
                while (itrType.hasNext()) {
                    Map.Entry dimension = (Map.Entry) itrType.next();
                    System.out.println(dimension.getValue());
                }
            }

            Long numWindows = (Long) roomObj.get("numWindows");
            String dateUpdated = (String) roomObj.get("dateUpdated");

        }
    }

    public static void main(String[] args) throws Exception{
        runRoomJSON();
    }
}
我收到了错误信息:

Exception in thread "main" java.util.NoSuchElementException
    at java.base/java.util.ArrayList$Itr.next(ArrayList.java:1000)
    at handleRoomJSON.runRoomJSON(handleRoomJSON.java:30)
    at handleRoomJSON.main(handleRoomJSON.java:44)

当我运行它时,“System.out.println(itrDim.next());”生成:{“roomWidth”:5,“roomLength”:7}。我需要能够获取值5和7,以便将它们放在我的tmpList中。我不确定为什么它不允许我使用itrType迭代itrDim,但请帮助我

奇怪。如果
roomDimension
只包含一个对象,为什么要将它做成一个数组?您在一次迭代中使用
itrDim.next()
两次:(1)打印它,(2)在
itrType=((Map)itrDim.next()).entrySet().iterator()
但每个
next()
都试图返回单独的值(一个放在先前由
next()
返回的值之后),但该数组只包含一个元素。将
next()
的结果存储在变量中,并在必要时多次使用该变量。
Exception in thread "main" java.util.NoSuchElementException
    at java.base/java.util.ArrayList$Itr.next(ArrayList.java:1000)
    at handleRoomJSON.runRoomJSON(handleRoomJSON.java:30)
    at handleRoomJSON.main(handleRoomJSON.java:44)