为了找出天气,JSON元素是JSONArray或JSONObject类型,我在位置0错误时得到意外的令牌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) . . .
我不明白为什么会发生这种异常.请帮帮我.
编辑后的更多细节:
我的这段代码与给定的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
.第一个呼叫耗尽它,然后每个后续呼叫看到一个空流.