что нового?Разбор большого JSON с булевым и массивом
У меня есть JSON, который имеет логическое значение как элемент 1 и массив объектов «Социо» как элемент 2, и мне нужно читать потоковое вещание, потому что оно очень велико.
My + 5.0Mb JSON вроде: {"response":true,"result":[{SOCIO OBJECT}, {SOCIO OBJECT}...]
Мой первый код (который бросил OutOfMemoryError
на API 8, 9) было:
InputStream source = f.retrieveStream(params[0]);
Gson gson = new Gson();
Reader reader = new InputStreamReader(source);
Respuesta response = gson.fromJson(reader, Respuesta.class);
Socio[] socios = response.getSocio();
Мой новый код для потоковой передачи является:
InputStream source = f.retrieveStream(params[0]);
Gson gson = new Gson();
JsonReader reader = new JsonReader(new InputStreamReader(source,"UTF-8"));
reader.skipValue(); // Because I have to skip the response... Am i doing this right??
lista = new ArrayList<Socio>();
Socio soc;
reader.beginArray();
while (reader.hasNext()) {
soc = gson.fromJson(reader, Socio.class);
lista.add(soc);
}
reader.endArray();
reader.close();
Но он выбрасывает это исключение, когда он почти загружен:
java.lang.IllegalStateException: Ожидаемое BEGIN_ARRAY но END_DOCUMENT в строке 1 колонки 4716089
на линии, которая имеет код: reader.beginArray();
This is где я на основе моего потокового чтения.
Я читал много разбора с помощью GSON, но я не могу найти ничего для разбора определенного массива из файла JSON. Я знаю только об этом с помощью библиотеки Android Json, но мне нужно использовать GSON. Я также просмотрел 10 первых страниц this search в Google, и я не нашел четкого ответа, и я понял this SO question, но он работает с объектами с именами, поэтому я не могу работать с ними для массива.
Заранее спасибо. С уважением. Рафаэль.
Я поздоровался в начале, но автоматически, SO удаляет это ...: O –