在java中读取json文件时出错

时间:2015-09-01 18:12:54

标签: java json

我在网站上搜索了这个问题,但找不到。我可以知道我在这里失踪了什么吗?

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)

1 个答案:

答案 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