2016-03-17 89 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