2013-12-18 57 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

相关问题