“线程中的异常”;“主要”;使用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)