Java карта объекта на несколько вариантов JSON - PullRequest
0 голосов
/ 08 февраля 2019

Как я могу сопоставить объект домена с несколькими вариантами объектов JSON (несколько DTO), без цепочки DOMAIN_OBJECT-> DTO-> JSON?У меня есть один большой доменный объект и более десяти вариантов представления.Когда я сопоставляю объект домена с определенным DTO с помощью structMap, а затем выполняю сериализацию с JSON с Джексоном, я трачу много времени.

Существует ли какой-либо инструмент для сопоставления объекта домена с несколькими вариантами JSON без DTO среднего уровня?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Я действительно не знаю ваш вариант использования, но в качестве примечания, если вы используете Джексона, я предполагаю, что вы используете ObjectMapper.ObjectMapper - это дорогой объект, который вы должны использовать как можно больше (следовательно, объявите его static и final), поскольку он выполняет много операций кэширования за сценой, когда один и тот же объект конвертируется много раз.

Еще лучше, получить ObjectWriter и / или ObjectReader от ObjectMapper, которые являются неизменяемыми и поточно-ориентированными (ObjectMapper сложно, если вы хотите изменить его конфигурацию во время выполнения), они должныулучшить вашу производительность.

Последнее, но я никогда не заходил так далеко, вы могли бы написать собственный сериализатор / десериализатор, но я вижу, что сложность заметно возрастает (таким образом, будет труднее поддерживать).

Если вы работаете со строками, дважды проверьте, что вы используете StringBuilder (или StringBuffer для многопоточного варианта использования) и ведение журнала только при необходимости (if(logger.isDebugEnabled() { log.debug(...) }), это типичные ловушки, снижающие производительность.

0 голосов
/ 08 февраля 2019

Это действительно зависит от того, на что похожи ваши более десяти вариантов .Иногда лучше всего придерживаться DTO, как описано в этом ответе , где DTO определяют контракт API REST.

В качестве альтернативы, в зависимости от ваших потребностей, вы можете игратьс @JsonView от Джексона.Используя Spring?Этот ответ может дать вам некоторые идеи.

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