Lettura di un file json in Android [chiuso]


84

Ho il seguente file json. Voglio sapere dove devo posizionare il file json nel mio progetto e come leggerlo e memorizzarlo.

{
"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]
]
}

3
Prima di pubblicare la domanda qui è necessario cercare su Google. Ci sono tantissimi esempi disponibili in rete.
Chirag

2
@ChiragRaval sono d'accordo. Ma dove inserisco il file json da leggere da un file?
Aakash Anuj

se hai un file json statico, puoi inserirlo all'interno di risorse e cartelle non
elaborate

2
@AakashAnuj: guarda la risposta di Faizan e metti il ​​tuo file nella cartella delle risorse
ρяσѕρєя K

16
Non so perché è stato chiuso. La domanda mi sembra perfettamente chiara e precisa. 1) Dove vengono archiviati i file di dati json durante lo sviluppo di un'app Android. 2) Come leggo quei dati? Certo, questo potrebbe essere suddiviso in due domande, ma le due domande sono così correlate (non ne userai mai una senza l'altra) che potresti anche chiedere entrambe, cosa che ha fatto AakashAnuj. Inoltre, @Faizan ha fatto un ottimo lavoro rispondendo, il che invalida il reclamo "senza risposta". Verdetto? Domanda valida
SMBiggs

Risposte:


212

Metti quel file nelle risorse .

Per il progetto creato nel progetto Android Studio è necessario creare la cartella delle risorse nella cartella principale.

Leggi quel file come:

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;

    }

e quindi puoi semplicemente leggere questo stringritorno da questa funzione come

JSONObject obj = new JSONObject(json_return_by_the_function);

Per ulteriori dettagli su JSON, vedere http://www.vogella.com/articles/AndroidJSON/article.html

Spero che otterrai quello che vuoi.


3
cosa succede se la dimensione del file è da 6 a 7 MB? se memorizza il file contenuto in una stringa, genera un'eccezione (memoria esaurita). C'è un modo per recuperare un solo jsonObject alla volta dal file JsonArray?
Hiren Dabhi

Come si legge un file JSON da un collegamento Web?
Si8

7
Per il progetto creato nel progetto Android Studio è necessario creare la cartella delle risorse nella cartella principale che cos'è asset foldere main folder?
Hirdesh Vishwdewa

3
L'allocazione del buffer in base al risultato restituito da available () non è corretta secondo i documenti Java: docs.oracle.com/javase/7/docs/api/java/io/… "Nota che sebbene alcune implementazioni di InputStream restituiranno il numero totale di byte nel flusso, molti no. Non è mai corretto utilizzare il valore di ritorno di questo metodo per allocare un buffer destinato a contenere tutti i dati in questo flusso.
Andrew

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.