2016-03-17 85 views
0

我試圖從一個文件中的這個JSON數據讀取如何在java中讀取json文件?

[{"name":"Luke","score":50},{"name":"Ryan","score":70}] 

代碼:

JsonParser parser = new JsonParser(); 

try{ 

Object obj = parser.parse(new FileReader("C:/Users/user/Documents/HighscoresJSON.json")); 
JSONObject jsonObject = (JSONObject) obj; 

String usersName = (String) jsonObject.get("name"); 
System.out.println("Name of user: " + usersName); 

int usersScore = (int) jsonObject.get("score"); 
System.out.println("Score: " + usersScore); 

這給我的錯誤:

 
com.google.gson.JsonArray cannot be cast to org.json.JSONObject 

回答

5

有幾個問題:

  1. 您的JSO N顯然是一個數組(它將[]包裝掉),並且您試圖將其視爲JSON對象。
  2. 你在混合兩個不同的JSON庫--Gson和org.json庫。

堅持一個庫(GSON在這種情況下):

Object obj = parser.parse(new FileReader("something.json")); 
JsonArray jsonArray = (JsonArray) obj; 

for (JsonElement element : jsonArray) { 
    JsonObject jsonObject = element.getAsJsonObject(); 

    String usersName = jsonObject.get("name").getAsString(); 
    System.out.println("Name of user: " + usersName); 

    int usersScore = jsonObject.get("score").getAsInt(); 
    System.out.println("Score: " + usersScore); 
} 
+0

感謝您的答覆,非常有幫助的,唯一的問題是我得到了,說只能遍歷一個循環jsonArray下一個錯誤數組或java.lang.Iterable的實例 – LC12382

+0

完美,非常感謝。 – LC12382