位置0处的意外字符(i)。 – 使用Java解析JSON

{ "0" : { "upc" : "00000000005", "name" : "Weighable Soup Cups", "location" : "5310ed21d5dc7aaa0343a932" }, "1" : { "upc" : "00000000011", "name" : "OF Reuseable Bags", "location" : "5310ed21d5dc7aaa0343a932" } } 

这是我试图解析的JSON的片段。 这是我正在使用的代码:

 public class Main { public static void main(String[] args) { JSONParser parser = new JSONParser(); JSONObject jsonObject = null; try { jsonObject = (JSONObject) parser.parse("items.json"); } catch (ParseException e) { e.printStackTrace(); } JSONObject structure = (JSONObject) jsonObject.get("0"); System.out.println(structure.get("upc")); } } 

由于某种原因,在位置0错误时抛出意外字符(i)。 据我所知,JSON文件格式正确用于解析,代码是可靠的,所以我不明白为什么这不起作用。 谢谢。

JSONParser#parse(String)需要一个JSON字符串,而不是文件名。

您可以使用需要Reader的重载方法,并提供包装FileInputStream

 jsonObject = (JSONObject) parser.parse(new InputStreamReader(new FileInputStream("items.json")));