Java.lang.ClassCastException: org.json.simple.JSONArray no se puede convertir en org.json.JSONArray

Tengo que leer un JsonArray datos de un archivo (en una tarjeta SD) y almacenar en una base de datos SQLite.

Pero estoy recibiendo un java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.JSONArray excepción al analizar datos a JsonArray .

Los datos en el archivo son muy grandes, los datos enteros no se pueden almacenar en una sola cadena o String Buffer o String Builder.

Aquí está mi código.

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

Por favor ayuda..

Compruebe sus instrucciones de importación en la parte superior de su archivo de origen.

Usted probablemente tiene una línea diciendo:

 import org.json.JSONArray; 

Debería ser:

 import org.json.simple.JSONArray; 

Si está trabajando en eclipse o en cualquier otro IDE inteligente, el problema probablemente ocurrió cuando comenzó a escribir la línea que comienza con JSONArray . En ese momento, el IDE le mostraría diferentes posibilidades de importar la clase JSONArray . Usted tiene uno en org.json.JSONArray y uno en org.json.simple.JSONArray . Esta última es la correcta, pero elige la primera y su IDE agregó automáticamente una línea de importación en la parte superior de su archivo java de origen.

De la excepción el problema es bastante evidente, la excepción le dice que su objeto obj no se puede org.json.JSONArray a un objeto org.json.JSONArray ya que es realmente un objeto org.json.simple.JSONArray . (Tenga en cuenta que hay una diferencia entre los dos).

Actualizar

Si desea usar org.json.JSONArray en org.json.JSONArray lugar, debe usar otra clase que jsonParser ya que ésta es del paquete org.json.simple . Actualmente está mezclando las dos bibliotecas, y eso es lo que causa sus problemas.

Primero puede leer todo el contenido del archivo en una cadena.

 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(); } } 

Ahora tendrá todo el contenido en String (variable de datos).

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

Después de eso, puede utilizar jsonArray como desee.

  • Analizando el enorme objeto JSON en Android?
  • Json Parsing de Url en Android, no funciona
  • Android Value ... de tipo java.lang.String no se puede convertir a JSONArray
  • Cómo evaluar expresiones de usuario en un entorno limitado
  • JSON elemento de verificación Java es un JSONArray o JSONObject
  • Obtener JSONArray sin nombre de matriz?
  • Obtenga el objeto JSON uno por uno desde la matriz JSON en Android utilizando Retrofit y RxJava
  • Mantener un campo JSON como String al deserializar usando Jackson
  • ¿Cómo comprobar si la respuesta del servidor es JSONAobject o JSONArray?
  • ¿Cómo hacer que el agente api.ai aprenda algo dinámicamente?
  • Android youtube API reproduce dos o más jugadores de Youtube en una actividad principal
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.