Lecture d'un fichier json sous Android [fermé]

84

J'ai le fichier json suivant. Je veux savoir où dois-je placer le fichier json dans mon projet et comment le lire et le stocker.

{
"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
la source
3
Avant de publier une question ici, vous devez rechercher sur Google. Il existe des tonnes d'exemples disponibles sur le net.
Chirag
2
@ChiragRaval Je suis d'accord. Mais où dois-je placer le fichier json à lire à partir d'un fichier?
Aakash Anuj
si vous avez un fichier json statique, vous pouvez le placer dans les actifs et les dossiers bruts de votre projet, mais si vous créez un fichier json dynamiquement, créez un fichier dans SDCARD
ρяσѕρєя K
2
@AakashAnuj: voir la réponse de Faizan et mettre votre fichier dans le dossier des actifs
ρяσѕρєя K
16
Je ne sais pas pourquoi cela a été fermé. La question me paraît parfaitement claire et précise. 1) Où sont stockés les fichiers de données json lors du développement d'une application Android. 2) Comment lire ces données? Bien sûr, cela pourrait être divisé en deux questions, mais les deux questions sont tellement liées (vous n'utiliserez jamais l'une sans l'autre) que l'on pourrait aussi bien poser les deux, ce qu'a fait AakashAnuj. De plus, @Faizan a fait un excellent travail pour y répondre, ce qui invalide la plainte "sans réponse". Verdict? Question valide
SMBiggs

Réponses:

210

Mettez ce fichier dans les actifs .

Pour le projet créé dans le projet Android Studio, vous devez créer un dossier d'actifs sous le dossier principal.

Lisez ce fichier comme:

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;

    }

et ensuite vous pouvez simplement lire ce stringretour par cette fonction comme

JSONObject obj = new JSONObject(json_return_by_the_function);

Pour plus de détails sur JSON, consultez http://www.vogella.com/articles/AndroidJSON/article.html

J'espère que vous obtiendrez ce que vous voulez.

Faizan
la source
3
et si la taille du fichier est de presque 6 à 7 Mo? si stocker le fichier contient dans une chaîne, il lève une exception (mémoire insuffisante). Existe-t-il un moyen de récupérer un seul jsonObject à la fois à partir du fichier JsonArray?
Hiren Dabhi
Comment lire un fichier JSON à partir d'un lien Web?
Si8
7
Pour le projet créé dans le projet Android Studio, vous devez créer un dossier d'actifs sous le dossier principal qu'est-ce que asset folderet main folder?
Hirdesh Vishwdewa
3
L'allocation du tampon en fonction du résultat renvoyé par available () est incorrecte selon la documentation Java: docs.oracle.com/javase/7/docs/api/java/io/… "Notez que bien que certaines implémentations d'InputStream retournent le nombre total d'octets dans le flux, beaucoup ne le seront pas. Il n'est jamais correct d'utiliser la valeur de retour de cette méthode pour allouer un tampon destiné à contenir toutes les données de ce flux. "
Andrew
@ SiKni8 Voir ici: stackoverflow.com/a/9606629/1536976
Trilarion
-1

Essaye ça:

JSONObject obj = new JSONObject(yourjsonstring);
rekire
la source
qu'est-ce que yourjsonstring? J'ai un fichier bif à partir duquel je veux lire.
Aakash Anuj
2
Voir la réponse de Faizan à ce sujet
rekire