Эффективно конвертируйте JsonObject в pojo с помощью JSON-B 1.0 (например, Yasson, Java EE 8) - PullRequest
2 голосов
/ 14 апреля 2019

JsonObject может быть преобразован в соответствующий ему экземпляр класса с помощью:

Pojo pojo = JsonbBuilder.create().fromJson(jsonObject.toString(), Pojo.class)

Однако использование jsonObject.toString() неэффективно, поскольку String является другим промежуточным представлением, который содержит ту же информацию.Мне нужно преобразовать jsonObject до привязки объекта.Итак, есть ли более эффективный способ добиться привязки с помощью JsonObject?

(обратите внимание, я хочу реализовать стандарты Java EE 8, поэтому Gson и Jackson не вариант, но могут быть концепции этого).В настоящее время в группе Yasson нет ответа, так что, надеюсь, кто-то найдет это.Майкл Шнелл также предложил связывание JsonStructure , но пока еще нет решения.

1 Ответ

3 голосов
/ 14 апреля 2019

В стандарте JSON-B 1.0 невозможно преобразовать объект JSON-P <-> POJO.Тем не менее, достаточное количество людей просили об этом, что мы обязательно рассмотрим следующую версию JSON-B.

Тем временем, преобразование в String или использование собственного адаптера - ваш лучший вариант.

Если вас беспокоит производительность с JSON-B , то, что вы можете сделать, чтобы улучшить производительность JSON-B, # 1 - это кешировать экземпляр Jsonb, а именно:Вызывайте JsonbBuilder.create() каждый раз, когда вам нужно позвонить в / изJson, потому что все сканирование аннотаций и разбор классов происходит после создания экземпляра Jsonb.

Обновление (июнь 2019 г.): Хотя до сих пор не существует стандартного способа сделать это в JSON-B, эталонная реализация JSON-B, Eclipse Yasson, добавила поддержку для этого в интерфейсе org.eclipse.yasson.YassonJsonb в этом PR .Надеемся, что эта функция будет включена в следующую версию спецификации JSON-B.

...