Lesen einer JSON-Datei in Android [geschlossen]

84

Ich habe die folgende JSON-Datei. Ich möchte wissen, wo ich die JSON-Datei in meinem Projekt platzieren soll und wie ich sie lesen und speichern soll.

{
"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
quelle
3
Bevor Sie hier eine Frage stellen, müssen Sie googeln. Es gibt Unmengen von Beispielen im Netz.
Chirag
2
@ChiragRaval Ich stimme zu. Aber wo platziere ich die JSON-Datei, um sie aus einer Datei zu lesen?
Aakash Anuj
Wenn Sie eine statische JSON-Datei haben, können Sie diese in Assets und Raw-Ordnern in Ihrem Projekt ablegen. Wenn Sie jedoch eine JSON-Datei dynamisch erstellen, erstellen Sie eine Datei in SDCARD
ρяσsρєя K
2
@AakashAnuj: siehe Faizan Antwort und legen Sie Ihre Datei in Assets-Ordner
ρяσSρєя K
16
Ich weiß nicht, warum dies geschlossen wurde. Die Frage scheint mir vollkommen klar und präzise zu sein. 1) Wo werden JSON-Datendateien bei der Entwicklung einer Android-App gespeichert? 2) Wie lese ich diese Daten? Sicher, dies könnte in zwei Fragen unterteilt werden, aber die beiden Fragen sind so eng miteinander verbunden (Sie werden niemals eine ohne die andere verwenden), dass man genauso gut beide Fragen stellen könnte, was AakashAnuj getan hat. Darüber hinaus hat @Faizan hervorragende Arbeit geleistet, was die "unbeantwortbare" Beschwerde ungültig macht. Urteil? Gültige Frage
SMBiggs

Antworten:

210

Legen Sie diese Datei in Assets .

Für Projekte, die in einem Android Studio-Projekt erstellt wurden, müssen Sie einen Assets-Ordner unter dem Hauptordner erstellen.

Lesen Sie diese Datei als:

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;

    }

und dann können Sie diese stringRückgabe einfach durch diese Funktion als lesen

JSONObject obj = new JSONObject(json_return_by_the_function);

Weitere Informationen zu JSON finden Sie unter http://www.vogella.com/articles/AndroidJSON/article.html

Ich hoffe, Sie bekommen, was Sie wollen.

Faizan
quelle
3
Was ist, wenn die Dateigröße fast 6 bis 7 MB beträgt? Wenn die Datei in einer Zeichenfolge gespeichert wird, wird eine Ausnahme ausgelöst (nicht genügend Speicher). Gibt es eine Möglichkeit, jeweils nur ein jsonObject aus der JsonArray-Datei abzurufen?
Hiren Dabhi
Wie lese ich eine JSON-Datei von einem Weblink?
Si8
7
Für ein in Android Studio erstelltes Projekt müssen Sie einen Assets-Ordner unter dem Hauptordner erstellen. Was ist asset folderund main folder?
Hirdesh Vishwdewa
3
Das Zuweisen des Puffers basierend auf dem von available () zurückgegebenen Ergebnis ist gemäß den Java-Dokumenten falsch: docs.oracle.com/javase/7/docs/api/java/io/… "Beachten Sie, dass einige Implementierungen von InputStream das zurückgeben Gesamtzahl der Bytes im Stream, viele nicht. Es ist niemals korrekt, den Rückgabewert dieser Methode zu verwenden, um einen Puffer zuzuweisen, der alle Daten in diesem Stream enthalten soll. "
Andrew
@ SiKni8 Siehe hier: stackoverflow.com/a/9606629/1536976
Trilarion
-1

Versuche dies:

JSONObject obj = new JSONObject(yourjsonstring);
rekire
quelle
Was ist deine Sehne? Ich habe eine BIF-Datei, aus der ich lesen möchte.
Aakash Anuj
2
Siehe Faizan Antwort dafür
rekire