Ich habe eine gültige JSON-Datei. Ich möchte es in einen Speicher als JSONArray
Objekt lesen.JSON-Dateiverarbeitungsfehler: Ein JSONArray-Text muss mit '[' bei 1 [Zeichen 2 Zeile 1] beginnen, wenn Datei in UTF-8-Codierung verwendet wird
Um das zu tun, dass ich den folgenden Code verwenden (angetrieben durch Apache Commons IO
2.5):
String jsonTxt = FileUtils.readFileToString(new File(file.json), "UTF-8");
JSONArray itemsArr = new JSONArray(jsonTxt);
Aber ich bekomme die Fehlermeldung:
Exception in thread "main" org.json.JSONException: A JSONArray text must start with '[' at 1 [character 2 line 1]
at org.json.JSONTokener.syntaxError(JSONTokener.java:433)
at org.json.JSONArray.<init>(JSONArray.java:106)
at org.json.JSONArray.<init>(JSONArray.java:145)
at il.ac.haifa.is.infomedia.dba.NewsSourcesData.loadNewsSourcesData(NewsSourcesData.java:39)
at il.ac.haifa.is.infomedia.main.Main.main(Main.java:65)
Nach mehreren Überprüfungen, fand ich heraus, dass die Wurzel des Problems ist die Dateicodierung. Wenn ich eine Datei in UTF-8
gebe, löst es eine Ausnahme aus, aber wenn ich die Datei in ANSI
umwandle, funktioniert alles korrekt.
Ich verwende org.json
Version json-20160212.jar
.
Meine Frage:
- Wie kann ich
JSONArray
aus meiner JSON-Datei inUTF-8
Codierung erhalten?
wenn Sie sich 'jsonTxt' ist es gültig JSON? – Yazan
@Yazan, yes.At mindestens 'IDEA 2016.1' und' jsonlint.com' behaupten dies. –
das ist seltsam! eine andere Anmerkung ist "Zeichen 2 Zeile 1" also was ist das 1. Zeichen? ist es eine Art von ungültigem Zeichen (unsichtbar vielleicht?), und eine andere Frage, durch "wenn ich die Datei in ASCII umwandle" meinst du die Dateikodierung umwandeln (speichern unter) oder einfach einen anderen Kodierungsnamen in deinem 'readFileToString()' verwenden ? – Yazan