Библиотека Gson работает ненадежно, поскольку предназначена для анализа большого JSON файла. - PullRequest
2 голосов
/ 04 августа 2020

Мне нужно разобрать действительно огромный файл JSON (размер файла может достигать нескольких ГБ), поэтому я не могу просто загрузить всю JSON String в память и разобрать ее на объект, мне нужно как-то прочитать строка за строкой JSON и проанализируйте ее. В настоящее время я использую JsonReader из библиотеки Gson, которая отлично работает, но недавно я обнаружил, что она иногда выдает ошибку с сообщением Unterminated string at line 1 column xxxxxxxxx path $.fieldname[random index].fieldname[random index].fieldname, но когда я проанализировал ее с помощью другой библиотеки, например Jackson, синтаксический анализ пошел безупречно (этот файл не такой уж и огромный, всего 50 МБ, поэтому я могу просто загрузить его в память и преобразовать в объект), так это ОШИБКА в Gson? И если да, то есть ли еще какая-нибудь библиотека JAVA, которую я могу использовать для того же? Буду признателен за любой ответ!

PS: Я использую gson-2.8.2

РЕДАКТИРОВАТЬ: Я снова протестировал тот же файл, используя Gson, та же ошибка произошла, но в другом строка и другое положение, поэтому подтверждено ли, что это ОШИБКА в Gson?

Ответы [ 2 ]

3 голосов
/ 04 августа 2020

Похоже, вам следует проверить проблемы GitHub для Gson: https://github.com/google/gson/issues Кроме того, минимальный пример для воспроизведения, который был бы хорош; вы даже можете сгенерировать такой файл, чтобы сделать пример автономным; -)

Кстати, пожалуйста, измените заголовок, так как вы, очевидно, знаете, как это сделать. Просто с Gson не работает надежно ...

1 голос
/ 06 августа 2020

Я также тестировал синтаксический анализ с библиотекой Jackson и все еще получал тот же тип ошибки, однако во многих тестах выясняется, что библиотеки Gson и Jackson могут иметь проблемы (не всегда) с обработкой JSON файл, который НЕ распечатан (это означает, что JSON не имеет правильного отступа), потому что все файлы JSON, которые я тестировал, помещают всю строку JSON в одну строку (технически это все еще файл git JSON), после того как я отформатировал его так, чтобы он имел отступы, синтаксический анализ прошел успешно (как Gson, так и Jackson), надеюсь, это поможет любому, кто столкнулся с той же проблемой, что и я

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