2013-12-18 83 views
5

我需要從文件(SD卡上)讀取JsonArray數據並將其存儲到SQLite數據庫中。java.lang.ClassCastException:org.json.simple.JSONArray無法轉換爲org.json.JSONArray

但我在解析數據到JsonArray時遇到java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.JSONArray異常。

該文件中的數據非常龐大,整個數據不能存儲在單個字符串或字符串緩衝區或字符串生成器中。

這是我的代碼。

FileReader fileReader = new FileReader(file_path); 
Object obj = jsonParser.parse(fileReader); 
JSONArray jsonArray = (JSONArray) obj; // Exception. 

請幫助..

+0

您在標準Android旁邊使用了哪些庫? – gunar

+0

我正在使用json-lib-2.2.2-jdk15.jar和json-simple-1.1.1.jar。 – user2085965

+0

你不應該嘗試僅使用其中之一嗎? – gunar

回答

8

在你的源文件的頂部檢查import語句。

你可能有一個行說:

import org.json.JSONArray; 

應該改爲:

import org.json.simple.JSONArray; 

如果您在Eclipse中工作,或任何其他智能IDE,在開始時,問題可能發生輸入從JSONArray開始的行。此時,IDE會向您顯示導入類JSONArray的不同可能性。您在org.json.JSONArray中有一個,在org.json.simple.JSONArray中有一個。後者是正確的,但你選擇第一個,你的IDE會自動在你的源代碼文件的頂部添加一個導入行。

從例外情況來看,問題非常明顯,異常告訴您obj對象不能轉換爲org.json.JSONArray對象,因爲它實際上是org.json.simple.JSONArray對象。 (請注意,兩者之間有所不同)。

更新

如果你想使用org.json.JSONArray相反,你應該使用另一個類比jsonParser這個人是從org.json.simple包。目前你正在混合兩個庫,這是你的麻煩。

+0

感謝您的回覆..但是org.json.JSONArray有jsonParser函數。如果我刪除org.json.simple.JSONArray,jsonParser會向我顯示錯誤。 – user2085965

+0

@ user2085965:如果您不想手動執行解析,則可以使用GSON並使生活更輕鬆。 – Swayam

+0

@ user2085965:查看我更新的答案。你應該刪除'import org.json.JSONArray;'不要'import org.json.simple。JSONArray;' –

0

您可以先將文件的全部內容讀入字符串。

FileInputStream fileInputStream = null; 
String data=""; 
StringBuffer stringBuffer = new StringBuffer(""); 
try{ 
    fileInputStream=new FileInputStream(filename); 
    int i; 
    while((i=fileInputStream.read())!=-1) 
    { 
     stringBuffer.append((char)i); 
    } 
    data = stringBuffer.toString(); 
    csvFile.delete(); 
} 
catch(Exception e){ 
     LoggerUtil.printStackTrace(e); 
} 
finally{ 
    if(fileInputStream!=null){ 
     fileInputStream.close(); 
    } 
} 

現在您將整個內容轉換爲String(數據變量)。

JSONParser parser = new JSONParser(); 
org.json.simple.JSONArray jsonArray= (org.json.simple.JSONArray) parser.parse(data); 

之後,您可以根據需要使用jsonArray。

+0

獲取「Exception in thread」main「java.lang.ClassCastException:org.json.simple.JSONObject can not被轉換爲org.json.simple.JSONArray「 – mahi

相關問題