2016-08-21 5 views
1

Я прочитал, как использовать API-интерфейс Jackson Streaming, а также планшеты Jackson для преобразования объекта-Json и наоборот, но для моего проекта Spring, который я должен использовать.Jackson Streaming API vs Jackson mappers

Было написано, что Streaming API является самым мощным, но я нахожу, что mappers очень просты в использовании и понятны.

Мой вопрос в том, как Streaming API является мощным, чем mappers, и который лучше использовать с точки зрения использования в проекте с большой весной?

+0

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

+0

да, это будет зависеть от размера данных, но в обоих случаях его нужно записать на диск, так где разница. Кроме того, как потоковое api мощнее, чем mappers. –

+0

Я действительно не понимаю, почему JSON нужно будет хранить на диске, но вы, похоже, не поняли мой предыдущий комментарий. Если у вас 500 МБ памяти, загрузка JSON с большим объемом памяти на 600 МБ, а затем запись этих 600 МБ на диск не будет работать. Загружая его 1 МБ на 1 МБ и записывая каждый МБ на диск, прежде чем загружать следующий, он будет работать нормально. –

ответ

1

Джексон 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, являющийся низкоуровневым, является более сложным в использовании и иногда запутанным, тогда как функциональность картографа проста в использовании.