我在网站上搜索了这个问题,但找不到。我可以知道我在这里失踪了什么吗?
package com.json;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class JsonTest {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
try {
Object obj = parser.parse(new FileReader("E://file.json"));
JSONObject jsonObject = (JSONObject) obj;
String nameOfCountry = (String) jsonObject.get("Name");
System.out.println("Name Of Country: "+nameOfCountry);
long population = (Long) jsonObject.get("Population");
System.out.println("Population: "+population);
System.out.println("States are :");
JSONArray listOfStates = (JSONArray) jsonObject.get("States");
Iterator<String> iterator = listOfStates.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
}
{“姓名”:“EX”,“人口”:1000000,“国家”:[“MP”,“MH”,“RN”]}
错误:位置0处的意外字符(ï)。 在org.json.simple.parser.Yylex.yylex(Yylex.java:610) at org.json.simple.parser.JSONParser.nextToken(JSONParser.java:269) 在org.json.simple.parser.JSONParser.parse(JSONParser.java:118) 在org.json.simple.parser.JSONParser.parse(JSONParser.java:92)
答案 0 :(得分:4)
错误消息在位置0显示一个奇怪的字符ï
。
您的JSON文件有UTF-8
BOM (byte order mark),以字节EF
开头,代码页ISO-8859-1
中的字符为ï
字符。
将您的JSON文件保存在ISO-8859-1
中,即不在UTF-8
中。 Java API不支持BOM。
或者,在没有 BOM的情况下保存在UTF-8
中,并将Java读作UTF-8
。