当前位置:  开发笔记 > 编程语言 > 正文

在解析JSON时,位置0处的意外标记END OF FILE

如何解决《在解析JSON时,位置0处的意外标记ENDOFFILE》经验,为你挑选了1个好方法。

为了找出天气,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);

谢谢.



1> Joe..:

你反复解析它Reader.第一个呼叫耗尽它,然后每个后续呼叫看到一个空流.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有