Belal Belal - 1 month ago 21
JSON Question

A JSONArray text must start with '[' at 1 [character 2 line 1]

I have a JSON file and i am trying to deal with but the following error is appears:


Exception in thread "main" org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]
at org.json.JSONTokener.syntaxError(JSONTokener.java:433)
at org.json.JSONObject.(JSONObject.java:195)
at org.json.JSONObject.(JSONObject.java:319)
at amazondataset.AmazonDataset.main(AmazonDataset.java:11)
Java Result: 1


This is a sample of the file:

{ "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"
}


and this is my code, simply:

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

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

Answer

You have to read the content of the file first, because the constructor of JSONArray needs the file-content and not the file-path.

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

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

update You should use a filereader or specify the charset for the FileInputStream