【问题标题】:A JSONArray text must start with '[' at 1 [character 2 line 1]JSONArray 文本必须在 1 [字符 2 第 1 行] 处以 '[' 开头
【发布时间】:2017-02-20 03:11:57
【问题描述】:

我有一个 JSON 文件,我正在尝试处理,但出现以下错误:

线程“main”org.json.JSONException 中的异常:JSONObject 文本必须在 1 [字符 2 第 1 行] 处以 '{' 开头 在 org.json.JSONTokener.syntaxError(JSONTokener.java:433) 在 org.json.JSONObject.(JSONObject.java:195) 在 org.json.JSONObject.(JSONObject.java:319) 在 amazondataset.AmazonDataset.main(AmazonDataset.java:11) Java 结果:1

这是文件的示例:

{ "reviewerID": "A2SUAM1J3GNN3B", 
  "asin": "0000013714", 
  "reviewerName": "J. McDonald", 
  "helpful": [2, 3], 
  "reviewText": "I bought this for my husband who plays the piano. He is having a wonderful time playing these old hymns. The music is at times hard to read because we think the book was published for singing from more than playing from. Great purchase though!", 
  "overall": 5.0, 
  "summary": "Heavenly Highway Hymns", 
  "unixReviewTime": 1252800000, 
  "reviewTime": "09 13, 2009" 
}

这是我的代码,很简单:

JSONObject ar = new JSONObject("E:\\amazonDS.json");

    for (int i = 0; i < ar.length(); i++) {
       System.out.println( "Name: " + ar.getString("reviewerName").toString() );            
    }

【问题讨论】:

  • 你需要JSONObject,而不是JSONArray。
  • 因为它不是数组(因为错误状态数组必须以“[”开头),它的对象
  • 另外寻找helpful
  • 同样的问题!! || JSONObject ar = new JSONObject("E:\\amazonDS.json"); for (int i = 0; i
  • @Belal 在您使用JSONObject jo = new JSONObject("E:\\amazonDS.json"); 时发布您的代码和错误消息。

标签: java json


【解决方案1】:

你必须先读取文件的内容,因为JSONArray的构造函数需要文件内容而不是文件路径。

new JSONObject(new JSONTokener(new FileInputStream(new File("path"), "UTF-8")));

new JSONObject(new JSONTokener(new FileReader("path")));

更新 您应该使用文件阅读器或为 FileInputStream 指定字符集

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多