2015-09-04 67 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