2016-09-30 91 views
1

我相信我需要創建一個JsonReader對象並調用其中一個Json靜態方法,但是我無法從我的file.json中讀取數據。如何使用javax.json包從JSON文件中讀取數據?

看來創建閱讀器方法要求輸入是一個字符串。我應該繼續嘗試讓我的整個JSON文件被解釋爲一個字符串嗎?

回答

3

假設你有文件file.json這樣的JSON數據:

{ 
    "name": "Jack", 
    "age" : 13, 
    "isMarried" : false, 
    "address": { 
     "street": "#1234, Main Street", 
     "zipCode": "123456" 
    }, 
    "phoneNumbers": ["011-111-1111", "11-111-1111"] 
} 

隨着javax.json可以解析這個文件是這樣說的:

public class Example throws Exception { 

    public static void main(String[] args) { 
     InputStream fis = new FileInputStream("file.json"); 

     JsonReader reader = Json.createReader(fis); 

     JsonObject personObject = reader.readObject(); 

     reader.close(); 

     System.out.println("Name : " + personObject.getString("name")); 
     System.out.println("Age : " + personObject.getInt("age")); 
     System.out.println("Married: " + personObject.getBoolean("isMarried")); 

     JsonObject addressObject = personObject.getJsonObject("address"); 
     System.out.println("Address: "); 
     System.out.println(addressObject.getString("street")); 
     System.out.println(addressObject.getString("zipCode")); 

     System.out.println("Phone : "); 
     JsonArray phoneNumbersArray = personObject.getJsonArray("phoneNumbers"); 

     for (JsonValue jsonValue : phoneNumbersArray) { 
      System.out.println(jsonValue.toString()); 
     } 
    } 
} 

也可參考這個問題:From JSON String to Java Object using javax.json

+0

非常感謝。我想我會嘗試使用Gson,因爲它看起來更強大。在Gson中是否有與InputStream等價的函數fis = new FileInputStream(「file.json」); ? – ekeen4

+0

@ ekeen4如果您需要Gson示例,請參考[使用GSON解析JSON文件](http://stackoverflow.com/questions/16377754/parse-json-file-using-gson) –