2013-12-18 6 views
5

पर नहीं डाला जा सकता है मुझे फ़ाइल से (0 एसडी कार्ड पर) 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

मानक एंड्रॉइड के बगल में आप किस लाइब्रेरी का उपयोग कर रहे हैं? – gunar

+0

मैं json-lib-2.2.2-jdk15.jar और json-simple-1.1.1.jar का उपयोग कर रहा हूं। – user2085965

+0

क्या आप उनमें से केवल एक का उपयोग करने की कोशिश नहीं करना चाहिए? – gunar

उत्तर

8

अपने स्रोत फ़ाइल के शीर्ष पर अपने आयात बयान की जाँच करें।

आप शायद एक लाइन कह है:

import org.json.JSONArray; 

यह बजाय होना चाहिए:

import org.json.simple.JSONArray; 

आप ग्रहण में काम कर रहे हैं, या किसी अन्य बुद्धिमान आईडीई यह समस्या शायद हुआ जब आप शुरू JSONArray से शुरू होने वाली रेखा टाइप करना। उस बिंदु पर, आईडीई आपको JSONArray कक्षा आयात करने की विभिन्न संभावनाएं दिखाएगा। आपके पास org.json.JSONArray में से एक है और org.json.simple.JSONArray में से एक है। उत्तरार्द्ध सही है, लेकिन आप पहले को चुनते हैं और आपके आईडीई ने स्वचालित रूप से आपके स्रोत जावा फ़ाइल के शीर्ष पर एक आयात लाइन जोड़ दी है।

अपवाद से समस्या काफी स्पष्ट है, अपवाद आपको बताता है कि आपकी obj ऑब्जेक्ट को org.json.JSONArray ऑब्जेक्ट पर नहीं डाला जा सकता क्योंकि यह वास्तव में org.json.simple.JSONArray ऑब्जेक्ट है। (ध्यान दें कि दोनों के बीच एक अलग है)।

अद्यतन

आप के बजाय org.json.JSONArray का उपयोग करना चाहते हैं, तो आप jsonParser से अन्य वर्ग का उपयोग करना चाहिए के रूप में यह एक org.json.simple पैकेज से है। वर्तमान में आप दो पुस्तकालयों को मिला रहे हैं, और यही कारण है कि आपकी परेशानियों का कारण बनता है।

+0

आपके उत्तर के लिए धन्यवाद .. लेकिन org.json.JSONArray में jsonParser functionlity है? अगर मैं org.json.simple.JSONArray को हटा देता हूं, jsonParser मुझे एक त्रुटि दिखा रहा है .. – user2085965

+0

@ user2085965: यदि आप मैन्युअल रूप से पार्सिंग नहीं करना चाहते हैं, तो आप जीएसओएन का उपयोग कर सकते हैं और जीवन को आसान बना सकते हैं। – Swayam

+0

@ user2085965: मेरा अद्यतन उत्तर देखें। आपको 'import org.json.JSONArray' को हटा देना चाहिए, 'आयात नहीं' 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(); 
    } 
} 

अब आपके पास स्ट्रिंग (डेटा चर) में पूरी सामग्री होगी।

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

इसके बाद आप जेसनअरे का उपयोग कर सकते हैं जैसा आप चाहते हैं।

+0

"थ्रेड में अपवाद" मुख्य "java.lang.ClassCastException: org.json.simple.JSONObject प्राप्त नहीं कर सकता org.json.simple.JSONArray पर डाला जा सकता है " – mahi

संबंधित मुद्दे