2015-09-04 91 views
0

我试图从dbpedia读取json文件并解析它。但是我写的代码无法正确读取整个json文件,因此出现了解析错误。这里是我的阅读和分析代码...文件无法正确读取

URL url=new URL("http://dbpedia.org/data3/assembly.json"); 

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); 
String inputLine="asdf"; 
while ((in.readLine()) != null) 
{ 
    if (inputLine=="asdf") 
     inputLine=in.readLine(); 
    else 
     inputLine+=in.readLine(); 
    //System.out.println(inputLine); 
} 
System.out.println(inputLine); 
Object obj = parser.parse(inputLine);  

JSONObject jsonObject = (JSONObject) obj; 
+0

什么是错误信息? – Paolo

+2

使用'String.equals'来比较字符串 – Reimeus

+0

错误消息是这样的 错误:第1行解析错误: .../ontology/assembly“:{”http://www.w3.o --- --------------------^ 期待'EOF','}',',',']',''':' 其他的我比较实际json文件和“inputLine”变量的输出并不完全相同。 –

回答

2

您可以创建一个辅助方法来读取URL文件:

private static String readUrl(String urlString) throws Exception { 
     BufferedReader reader = null; 
     try { 
      URL url = new URL(urlString); 
      reader = new BufferedReader(new InputStreamReader(url.openStream())); 
      StringBuffer buffer = new StringBuffer(); 
      int read; 
      char[] chars = new char[1024]; 
      while ((read = reader.read(chars)) != -1) { 
       buffer.append(chars, 0, read); 
      } 
      return buffer.toString(); 
     } finally { 
      if (reader != null) 
       reader.close(); 
     } 
    } 

,那么你可以调用的方法是这样

try { 
    JSONObject json = new JSONObject(readUrl("http://dbpedia.org/data3/assembly.json")); 
    ... 

} catch (JSONException e) { 
    e.printStackTrace(); 
} 

这取决于你,如果你需要StringBuffer或StringBuilder