OutOfMemoryError, когда Джексон десериализует объект JSON - PullRequest
0 голосов
/ 07 июня 2019

У меня проблема с очень большим файлом JSON, который слишком велик для использования ObjectMapper.readValue () в JsonNode.Я хотел бы использовать решение из Ошибка нехватки памяти при анализе большого JSON с использованием библиотеки Джексона на Android , за исключением того, что файл JSON представляет собой отдельный объект с именами полей, которые не известны заранее, поэтому яя не могу создать модель POJO для десериализации.

Каждое свойство внутри объекта имеет одинаковый формат, и я могу игнорировать многие свойства этих внутренних объектов (у меня уже есть класс POJO для моделирования этого),Мне было бы легче решить эту проблему, если бы файл JSON представлял собой массив, а не объект.(Я не тот, кто создает файл, просто читаю из него.)

(я публикую свое решение ниже, но надеюсь, что есть лучшее!)

1 Ответ

0 голосов
/ 07 июня 2019

Не имея возможности загрузить исходный файл в ObjectMapper, я решил проанализировать файл JSON и переписать его как массив.Читая и записывая построчно, я преобразовал файл, который выглядит следующим образом (но гораздо больше):

{
    "Unexpected Monkey" : {
        "name" : "UnexpectedMonkey",
        "age" : 7
    },
    "Another Unexpected Name" : {
        "name" : "Another Unexpected Name",
        "age" : 2
    }
}

в:

[
    {
        "name" : "UnexpectedMonkey",
        "age" : 7
    },
    {
        "name" : "Another Unexpected Name",
        "age" : 2
    }
]

Затем я могу проанализировать файлla Как проанализировать строку JSON в массив с помощью Jackson

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...