Джексон Mappers:
при использовании Jackson Картостроителей, мы загружаем весь документ JSON в память как объект Java. Это может быть проблемой, если у вас очень большой набор данных. например, если mappers используются в очень большом проекте, ваш предел памяти составляет всего 512 МБ, но размер JSON составляет 600 МБ, в этом случае приложение выйдет из строя. В таких ситуациях предпочтительным является использование Streaming API.
Джексон Streaming API:
при использовании джексон Streaming API, мы можем загрузить JSon маркер данных с помощью маркеров т.е. как название потокового API обрабатывает документ JSon в потоке JSon маркеров, которые могут потребляться один за другим один без проблем с памятью. Но если требование памяти не так много, то предпочтение отдается Mappers, потому что они быстрые и эффективные.
Вторая часть вопроса,
Как Streaming API более мощный, чем картографы?
Ну, поскольку документ json рассматривается как поток токенов, мы можем манипулировать токенами в соответствии с нашими требованиями и использовать их. Mappers обеспечивают только функцию выборки и хранения. Интерфейс Streaming API намного ниже, чем у разработчика.
API, являющийся низкоуровневым, является более сложным в использовании и иногда запутанным, тогда как функциональность картографа проста в использовании.
Когда полезно загружать все содержимое файла в память, и когда лучше читать файл по строкам и обрабатывать каждую строку по очереди? Я бы сказал, что в основном это зависит от размера файла, количества файлов для одновременной обработки, доступной памяти и относительной сложности двух возможных решений. не так ли? То же самое для JSON. –
да, это будет зависеть от размера данных, но в обоих случаях его нужно записать на диск, так где разница. Кроме того, как потоковое api мощнее, чем mappers. –
Я действительно не понимаю, почему JSON нужно будет хранить на диске, но вы, похоже, не поняли мой предыдущий комментарий. Если у вас 500 МБ памяти, загрузка JSON с большим объемом памяти на 600 МБ, а затем запись этих 600 МБ на диск не будет работать. Загружая его 1 МБ на 1 МБ и записывая каждый МБ на диск, прежде чем загружать следующий, он будет работать нормально. –