Я создаю приложение для Android, которое должно анализировать Json из файла или URL-адреса jsonarray и jsonobjects. Проблема в том, что мой json равен 3,3 мб, и когда я использую простой код, что-то вроде этого: (теперь я не могу получить доступ к реальному коду, потому что im на работе, скопировал какой-то код из учебника, так что в нем могут быть некоторые ошибки)Android: Разбор большого файла JSON
(предполагая, что у меня уже есть мое содержание InputStream)
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
String twitterfeed = builder.toString();
}
JSONArray jsonArray = new JSONArray(twittefeed);
Log.i(ParseJSON.class.getName(),
"Number of entries " + jsonArray.length());
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Log.i(ParseJSON.class.getName(), jsonObject.getString("text"));
когда я запускаю этот код на моем устройстве Android, я получаю OutOfMemory ошибки при разборе строки в jsonArray. Я зарегистрировал некоторые вещи, которые обнаружили, что моя общая строка составляет 17 мб (из файла json размером 3,3 МБ ?!) Когда я использую небольшой файл json, например, twitterfeed или так, код работает нормально. Когда я получил эту 17-мегабайтную строку в своей памяти, я не могу разобрать json, потому что тогда у меня закончилась нехватка памяти.
После многих исследований я обнаружил, что Джексон может быть моим решением, потому что я понял, что можно разобрать входной поток. Это должно помочь, потому что мне не нужна строка 17 мб в моей памяти; и это не самый эффективный способ, который я считаю ... Но я не могу понять, что это действительно сработает, и не заставляло его работать. Кто-нибудь знает об этом, действительно будет работать, и где я могу найти учебник?
Я нашел "createJsonParser -- public JsonParser createJsonParser(InputStream in)" и думаю, что это мой путь ... но я не знаю, как реализовать это в своем коде и не могу найти пример. Кто-нибудь знает, как это работает?
Попробуйте найти здесь: http://stackoverflow.com/questions/9390368/java-best-approach-to-parse-huge-extra-large-json-file –