2016-10-11 63 views
1

我需要從文件讀入JSON文件輸入到我的Java程序中。 我發現了一些合理使用的代碼,下面我有一個例子。 但我使用Eclipse和我試圖引用JSONObject時出錯。 顯然,我沒有在日食中安裝的庫。所以我想知道什麼是最簡單的方法來實現它的工作。我是否需要安裝整個大型圖書館,或者是否有另一種方法。如果我確實需要安裝最好/最簡單的庫,並且可以指向一個鏈接進行下載。使用Eclipse讀取JSON文件,我需要一個庫還是不需要

謝謝!

 String jsonData = ""; 
    BufferedReader br = null; 
    try { 
     String line; 
     br = new BufferedReader(new FileReader(pathname)); 
     while ((line = br.readLine()) != null) { 
      jsonData += line + "\n"; 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      if (br != null) 
       br.close(); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
    } 
    // System.out.println("File Content: \n" + jsonData); 
    JSONObject obj = new JSONObject(jsonData); 
+0

您將需要一個庫。我假設你正在嘗試使用jsson.org Java: https://github.com/stleary/JSON-java –

+0

'JSONObject'不是標準Java庫的一部分,所以,是的,你需要一個單獨的庫。 –

回答

1

JSONObject不是JDK的一部分,所以確實需要導入一個庫到您的項目能夠執行你的代碼。

您可以從here得到它,如果你用maven只是下一依賴性添加到項目的POM文件:

<dependency> 
    <groupId>org.json</groupId> 
    <artifactId>json</artifactId> 
    <version>20160810</version> 
</dependency> 

最後請注意,你的代碼可以通過使用JSONTokener是簡化能夠解析從InputStreamReader這似乎是很多,你的情況比較合適JSON內容,所以你的代碼應該是:

JSONObject obj; 
try (InputStream input = new FileInputStream(pathname)) { 
    obj = new JSONObject(new JSONTokener(input)); 
} 
-1

得到字符串後你的jsondata,你必須解析它。有一個例子

public static List<String> GetCodes(String json) 
     { 
      try { 
       List<String> list = new ArrayList<>(); 
       JSONArray jsonArray = new JSONArray(json); 
       for(int i = 0, limit = jsonArray.length(); i < limit; i++) 
       { 
        JSONObject j = jsonArray.getJSONObject(i); 
        list.add(j.getString("Code")); 
       } 
       return list; 
      } 
      catch (JSONException e) 
      { 
       e.printStackTrace(); 
      } 
      return null; 
     } 
+0

OP詢問他必須導入哪個庫。解析代碼已經存在於他的問題中。 – f1sh

+0

他可以使用JSONObject,因此他可以在沒有庫的情況下使用此代碼。 – Kayra