Leyendo un archivo json en Android [cerrado]

84

Tengo el siguiente archivo json. Quiero saber dónde debo colocar el archivo json en mi proyecto y cómo leerlo y almacenarlo.

{
"aakash": [
    [  0.070020,0.400684],
    [  0.134198,0.515837],
    [  0.393489,0.731809],
    [  0.281616,0.739490]

],
"anuj": [
    [  1287.836667,-22.104523],
    [  -22.104523,308.689613],
    [  775.712801,-13.047385],
    [  -13.047385,200.067743]
]
}
Aakash Anuj
fuente
3
Antes de publicar una pregunta aquí, debe buscar en Google. Hay toneladas de ejemplos disponibles en la red.
Chirag
2
@ChiragRaval Estoy de acuerdo. Pero, ¿dónde coloco el archivo json para leer desde un archivo?
Aakash Anuj
si tiene un archivo json estático, puede colocarlo dentro de los activos y carpetas sin formato en su proyecto, pero si está creando un archivo json de forma dinámica, cree un archivo en SDCARD
ρяσѕρєя K
2
@AakashAnuj: vea la respuesta de Faizan y coloque su archivo en la carpeta de activos
ρяσѕρєя K
16
No sé por qué se cerró esto. La pregunta me parece perfectamente clara y precisa. 1) ¿Dónde se almacenan los archivos de datos json al desarrollar una aplicación de Android? 2) ¿Cómo leo esos datos? Claro, esto podría dividirse en dos preguntas, pero las dos preguntas están muy relacionadas (nunca usarás una sin la otra) que bien podrías preguntar ambas, lo que hizo AakashAnuj. Además, @Faizan hizo un gran trabajo respondiéndola, lo que invalida la denuncia "incontestable". ¿Veredicto? Pregunta válida
SMBiggs

Respuestas:

210

Pon ese archivo en activos .

Para el proyecto creado en el proyecto de Android Studio, debe crear una carpeta de activos en la carpeta principal.

Lea ese archivo como:

public String loadJSONFromAsset(Context context) {
        String json = null;
        try {
            InputStream is = context.getAssets().open("file_name.json");

            int size = is.available();

            byte[] buffer = new byte[size];

            is.read(buffer);

            is.close();

            json = new String(buffer, "UTF-8");


        } catch (IOException ex) {
            ex.printStackTrace();
            return null;
        }
        return json;

    }

y luego simplemente puede leer este stringretorno por esta función como

JSONObject obj = new JSONObject(json_return_by_the_function);

Para obtener más detalles sobre JSON, consulte http://www.vogella.com/articles/AndroidJSON/article.html

Espero que consigas lo que quieres.

Faizan
fuente
3
¿Qué pasa si el tamaño del archivo es de casi 6 a 7 MB? si almacena el archivo que contiene en una cadena, arroja una excepción (sin memoria). ¿Hay alguna forma de recuperar solo un jsonObject a la vez del archivo JsonArray?
Hiren Dabhi
¿Cómo leo un archivo JSON desde un enlace web?
Si8
7
Para el proyecto creado en el proyecto de Android Studio, debe crear una carpeta de activos en la carpeta principal, ¿qué es asset foldery main folder?
Hirdesh Vishwdewa
3
La asignación del búfer según el resultado devuelto por available () es incorrecta según los documentos de Java: docs.oracle.com/javase/7/docs/api/java/io/… "Tenga en cuenta que, si bien algunas implementaciones de InputStream devolverán el número total de bytes en el flujo, muchos no lo harán. Nunca es correcto usar el valor de retorno de este método para asignar un búfer destinado a contener todos los datos en este flujo ".
Andrew
@ SiKni8 Ver aquí: stackoverflow.com/a/9606629/1536976
Trilarion
-1

Prueba esto:

JSONObject obj = new JSONObject(yourjsonstring);
rekire
fuente
¿cuál es tu cadena json? Tengo un archivo bif del que quiero leer.
Aakash Anuj
2
Vea la respuesta de Faizan para eso
rekire