为了找出天气,JSON元素是JSONArray或JSONObject类型,我在位置0处收到意外的 token END OF FILE错误。
我的JSON是:
{"colors":[{"color":"red","value":"#00"},{"color":"white","value":"#000g"}]}
我的代码是:
java.io.FileReader reader = new java.io.FileReader("jsonpath");
org.json.simple.parser.JSONParser parser = new JSONParser();
System.Out.Println("aaaaaa JSON Class: "+parser.parse(reader).getClass());
if(parser.parse(reader) instanceof org.json.simple.JSONArray)
System.Out.Println("JSONArray");
else if(parser.parse(reader) instanceof org.json.simple.JSONObject)
System.Out.Println("JSONObject");
当我运行上面的代码时,它显示此输出
aaaaaa JSON Class: class org.json.simple.JSONObject Unexpected token END OF FILE at popsition 0
at org.json.simple.parser.JSONParser(Unknown Source)
.
.
.
<rest of the exception>
我不明白为什么会发生这种异常。
请帮帮我。
编辑后的更多详细信息:
我的这段代码可以很好地处理给定的json文件:
java.io.FileReader reader = new java.io.FileReader("jsonpath");
org.json.simple.parser.JSONParser parser = new JSONParser();
org.json.simple.JSONObject object = (JSONObject)parser.parse(reader);
System.Out.Println("JSONObject: "+object);
org.json.simple.JSONArray array = (JSONArray)object.get("colors");
System.Out.Println("JSONArray: "+array);
上面代码的输出:
JSONObject: {"colors":[{"color":"red","value":"#00"},{"color":"white","value":"#000g"}]}
JSONArray: [{"color":"red","value":"#00"},{"color":"white","value":"#000g"}]
但我想在不知道JSON结构的情况下动态解析JSON。
我想做这样的事情:
if(json is object)
JSONObject object = (JSONObject)parser.parse(reader);
else if (json is array)
JSONArray array = (JSONArray)parser.parse(reader);
谢谢。
最佳答案
您反复分析相同的Reader
。第一个调用将其耗尽,然后每个后续调用都看到一个空流。
关于java - 解析JSON时在位置0出现意外的 token END OF FILE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34285649/