Odczytywanie pliku json w Androidzie [zamknięte]

84

Mam następujący plik JSON. Chcę wiedzieć, gdzie powinienem umieścić plik json w moim projekcie oraz jak go czytać i przechowywać.

{
"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
źródło
3
Przed wysłaniem tutaj pytania musisz google. W sieci jest mnóstwo przykładów.
Chirag,
2
@ChiragRaval Zgadzam się. Ale gdzie umieścić plik json do odczytu z pliku?
Aakash Anuj,
jeśli masz statyczny plik json, możesz umieścić go w zasobach i surowych folderach w projekcie, ale jeśli tworzysz plik json dynamicznie, utwórz plik w SDCARD
ρяσѕρєя K
2
@AakashAnuj: zobacz odpowiedź Faizana i umieść plik w folderze zasobów
ρяσѕρєя K
16
Nie wiem, dlaczego to zostało zamknięte. Pytanie wydaje mi się jasne i precyzyjne. 1) Gdzie są przechowywane pliki danych json podczas tworzenia aplikacji na Androida. 2) Jak czytać te dane? Jasne, można to podzielić na dwa pytania, ale te dwa pytania są tak bardzo powiązane (nigdy nie użyjesz jednego bez drugiego), że równie dobrze można by zadać oba, co zrobił AakashAnuj. Ponadto @Faizan wykonał świetną robotę, odpowiadając na nie, co unieważnia skargę „bez odpowiedzi”. Werdykt? Prawidłowe pytanie
SMBiggs

Odpowiedzi:

210

Umieść ten plik w zasobach .

W przypadku projektu utworzonego w projekcie Android Studio musisz utworzyć folder zasobów w folderze głównym.

Przeczytaj ten plik jako:

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;

    }

a następnie możesz po prostu odczytać ten stringzwrot przez tę funkcję jako

JSONObject obj = new JSONObject(json_return_by_the_function);

Więcej informacji na temat JSON można znaleźć pod adresem http://www.vogella.com/articles/AndroidJSON/article.html

Mam nadzieję, że dostaniesz to, czego chcesz.

Faizan
źródło
3
co się stanie, jeśli rozmiar pliku wynosi prawie 6 do 7 MB? jeśli przechowuje plik zawierający w łańcuchu, zgłasza wyjątek (brak pamięci). Czy istnieje sposób na pobranie tylko jednego obiektu jsonObject z pliku JsonArray naraz?
Hiren Dabhi
Jak odczytać plik JSON z łącza internetowego?
Si8
7
W przypadku projektu utworzonego w projekcie Android Studio musisz utworzyć folder zasobów w folderze głównym, co to jest asset folderi main folder?
Hirdesh Vishwdewa
3
Przydzielanie bufora na podstawie wyniku zwróconego przez available () jest niepoprawne, zgodnie z dokumentacją Java: docs.oracle.com/javase/7/docs/api/java/io/ ... ”Zauważ, że chociaż niektóre implementacje InputStream zwracają łączna liczba bajtów w strumieniu, wiele nie będzie. Używanie wartości zwracanej przez tę metodę do przydzielania buforu przeznaczonego do przechowywania wszystkich danych w tym strumieniu nigdy nie jest poprawne ”.
Andrew
@ SiKni8 Zobacz tutaj: stackoverflow.com/a/9606629/1536976
Trilarion
-1

Spróbuj tego:

JSONObject obj = new JSONObject(yourjsonstring);
rekire
źródło
jaki jest twój jsonstring? Mam plik bif, z którego chcę przeczytać.
Aakash Anuj,
2
Zobacz odpowiedź
Faizana