Джексон рассматривает поле как объект и включает аннотацию в значение

У меня интересная проблема, и я не знаю, как лучше ее спроектировать. Был бы признателен за любые входы.

У меня есть класс bean, который нужно преобразовать в Json. Проблема в том, что у поля есть аннотации настраиваемых свойств.

@Descriptors(type = "property", dbColumn = "currency")
private String currency = USD; //(initializing for brevity)

Я хочу, чтобы Json выглядел так:

{
    "currency": {
        "type": "property",
        "dbColumn": "currency",
        "value": "USD"
    }
}

Подробный способ - создать триаду утилит и преобразовать аннотации в поля, а затем использовать это для json. Есть ли другой лучший способ добиться этого?

Не уверен, правильно ли я понял: / Является ли currencyString, но вы хотите, чтобы он отображался (JSON) как объект со многими атрибутами? Я думаю, здесь есть заблуждение. Если currency является атрибутом класса String, он не может быть представлен как составной объект с множеством других данных (type, dbColumn) или ... они исправлены? Я имею в виду, всегда ли они будут property и currency? В противном случае валюта должна быть отдельной сущностью (таблица в db) со всеми атрибутами (столбцами), которые она может содержать.

lealceldeiro 20.03.2018 18:03

В этом случае я фактически конвертирую устаревший код. Текущий код делает следующее: class Security <T> {private static final Security sec = add (new Security <String> (String.class, "currency", "property")); Я отображаю этот объект в более простой объект, который затем можно сопоставить с JSON. Также в сфере безопасности существует около 100+ таких полей.

juggernaut 20.03.2018 18:06

В общем, вы можете написать собственный сопоставитель объектов Jackson Object Mapper, который проверяет поля вашего класса Java на предмет конкретных аннотаций, считывает атрибуты аннотации и использует их в процессе сериализации. Я не думаю, что это хороший подход. Я считаю, что вам следует создать новый слой с объектами DTO, которые являются производными от устаревших и упрощены так, как вы хотите, и использовать эти объекты в процессе сериализации.

hovanessyan 20.03.2018 20:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
63
0

Другие вопросы по теме