Чтение файла json в Android [закрыто]

84

У меня есть следующий файл json. Я хочу знать, где мне разместить json-файл в моем проекте и как его читать и хранить.

{
"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
Прежде чем разместить здесь вопрос, вам нужно погуглить. В сети доступно множество примеров.
Chirag
2
@ChiragRaval Я согласен. Но где мне разместить файл json для чтения из файла?
Aakash Anuj
если у вас есть статический файл json, вы можете поместить его в активы и необработанные папки в своем проекте, но если вы создаете файл json динамически, создайте файл на SDCARD
ρяσѕρєя K
2
@AakashAnuj: посмотрите ответ Файзана и положите файл в папку с ресурсами
ρяσѕρєя K
16
Не знаю, почему это было закрыто. Мне вопрос кажется совершенно ясным и точным. 1) Где хранятся файлы данных json при разработке приложения для Android. 2) Как мне прочитать эти данные? Конечно, это можно разбить на два вопроса, но эти два вопроса настолько связаны (вы никогда не будете использовать один без другого), что с таким же успехом можно задать оба, что и сделал AakashAnuj. Кроме того, @Faizan отлично ответил на него, что делает недействительной жалобу "без ответа". Вердикт? Действительный вопрос
SMBiggs

Ответы:

212

Поместите этот файл в активы .

Для проекта, созданного в проекте Android Studio, вам необходимо создать папку с активами в основной папке.

Прочтите этот файл как:

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;

    }

а затем вы можете просто прочитать этот stringрезультат этой функции как

JSONObject obj = new JSONObject(json_return_by_the_function);

Для получения дополнительных сведений о JSON см. Http://www.vogella.com/articles/AndroidJSON/article.html.

Надеюсь, вы получите то, что хотите.

Файзан
источник
3
что, если размер файла составляет почти 6-7 МБ? если сохранить файл, содержащийся в строке, он выдает исключение (из памяти). Есть ли способ получить только один jsonObject за раз из файла JsonArray?
Hiren Dabhi 05
Как прочитать файл JSON по веб-ссылке?
Si8 08
7
Для проекта, созданного в проекте Android Studio, вам необходимо создать папку с активами в основной папке, что есть asset folderи main folder?
Hirdesh Vishwdewa
3
Распределение буфера на основе результата, возвращаемого функцией available (), неверно согласно документации Java: docs.oracle.com/javase/7/docs/api/java/io/… "Обратите внимание, что хотя некоторые реализации InputStream будут возвращать общее количество байтов в потоке, многие не будут. Никогда не правильно использовать возвращаемое значение этого метода для выделения буфера, предназначенного для хранения всех данных в этом потоке ».
Эндрю
@ SiKni8 См. Здесь: stackoverflow.com/a/9606629/1536976
Триларион,