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
.
- Pasando el objeto JSON en la URL del servicio Web RESTFUL en Android?
- WebDriver de Android. XMLHttpRequest no puede cargar 'URL'. Origen 'URL' no está permitido por Access-Control-Allow-Origin. En null: 1
- ¿Cuál usar? JSONObject de org.json VS JsonObject de javax.json
- Pasar JSONArray a PHP desde Android
- Enviar y recibir datos desde el servidor mediante la API 6.0 (Android)
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..
- StringRequest con cuerpo JSON
- ¿Cómo puedo especificar la serialización con GSON?
- Convertir el número decimal json a corto con valor hexadecimal
- ¿Está bien para guardar una matriz JSON en SharedPreferences?
- Manejo de respuestas con Volley
- Cómo analizar las matrices json anidadas en un solo objeto en android
- Respuesta de JSON de Django en Android
- Gson deserializa json con diferentes tipos de valor
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.