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.

  • El ID de transacción se ha configurado correctamente, pero sólo se ha mostrado un envío posterior
  • Llame a .NET Webservice con Android
  • Cómo obtener actualizaciones en vivo a través de JSON a listview
  • Android: Convertir secuencia a cadena sin quedarse sin memoria
  • Pojo analiza gson con nombres de java no válidos
  • Kotlin: Iterate a través de un JSONArray
  • Desarrollar sitios web con la misma API que los móviles
  • Subida de imagen multiparte de Android con HttpConnectionParams obsoleta en nueva API
  • AsycnTask # 3 error al analizar el objeto JSON. String no se puede convertir a JSONObject
  • ¿Cómo puedo hacer una petición Volley JSONObject con un objeto personalizado como parámetro?
  • Análisis de la cadena JSON de la URL (RESTful webservice) mediante las bibliotecas GSON. Androide
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.