2015-06-22 36 views
0

解析下面的JSON文件時出現錯誤。如果有人請幫助我,非常感謝!使用Java解析JSON文件時出錯

{"Name":"Abc", "Author":"fgd", "Company List":{"Company":"C1","Companyone":"Compa2"}} 

這裏是我的代碼: -

JSONParser parser = new JSONParser(); 

    try { 

     Object obj = parser.parse(new FileReader("/Users/abcdefgh/Documents/File1.txt")); 

     JSONObject jsonObject = (JSONObject) obj; 

     String name = (String) jsonObject.get("Name"); 
     String author = (String) jsonObject.get("Author"); 
     System.out.println("Name: " + name); 
     System.out.println("Author: " + author); 
     // JSONArray companyList= new JSONArray(); 
     //companyList.add(obj); 
     JSONArray companyList = (JSONArray) jsonObject.get("Company List"); 


     System.out.println("Company List:"); 
     /* for (int i=0;i<2;i++){ 
      System.out.println(companyList.get(i)); 

     } 
     */Iterator<String> iterator = companyList.iterator(); 
     while (iterator.hasNext()) { 
      System.out.println(iterator.next()); 
     } 

輸出: -

名稱:農行

作者:FGD

java.lang.ClassCastException:組織.json.simple.JSONObject不能爲 ca第一至在 com.selenium.test.JSONRead.main(JSONRead.java:29)

回答

0

「公司列表」屬性的屬性類型是對象,而不是數組。

替換行

JSONArray companyList = (JSONArray) jsonObject.get("Company List"); 

爲:

JSONObject companyList = jsonObject.getJSONObject("Company List"); 

如果你想獲得此對象的值,你可以做到以下幾點:

JSONObject companyList = jsonObject.getJSONObject("Company List"); 
String company = companyList.getString("Company"); 

而且記得要得到一個JSONObject屬性的值,它是一個數組,你必須使用方法getJSONArray

+0

感謝您的回覆!使用getJSONObject,我能夠成功解析它。 –

0

companyList是JSON對象,而不是一個陣列org.json.simple.JSONArray。這就是爲什麼你得到這個類拋出異常。

+0

謝謝,但是如何提取CompanyList組件? –