Исключение из-за нехватки памяти при разборе 5-мегабайтного ответа JSON в Android - PullRequest
4 голосов
/ 09 марта 2012

Я получаю 5 МБ ответа JSON, загружаю и сохраняю в StringBuffer, используя байтовый массив размером 1024.

Чтобы разобрать этот ответ, мне нужно создать JSONObject с параметром в виде строки. При преобразовании ответа в строку я получаю out of memory exception(stringBufferVar.toString()).

Из службы я получу следующий ответ в виде максимум 5 вложений, каждое из которых содержит максимум 5 МБ данных в кодировке Base64.

Ниже приводится ответ от службы.

{"result":[{"attachment":{"name":"one.doc", "type":"document", "data":"base64 encoded data max of 5MB"}, {"attachment":{"name":"two.txt", "type":"text", "data":"base64 encoded data max of 5MB"} }] }

Я покажу вложения в списке, когда пользователь нажимает на элемент, который я должен сохранить, вложение в SDCard. Для этого, как я могу проанализировать и сохранить этот огромный объем данных в JSON.

Пожалуйста, предоставьте любое решение для этого.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Вам нужно использовать потоковый парсер.в API 11+ есть http://developer.android.com/reference/android/util/JsonReader.html

Ниже представлен gson http://code.google.com/p/google-gson/

Кроме того, вам, вероятно, необходимо сохранить ответ службы в виде файла, прежде чем повторно открывать его с помощью JsonReader.

0 голосов
/ 14 декабря 2015

Используйте Джексона

Джексон Гитхуб

Это должно решить вашу проблему. Но я не буду рекомендовать вам использовать огромные данные без нумерации страниц.

...