У меня интересная проблема, и я не знаю, как лучше ее спроектировать. Был бы признателен за любые входы.
У меня есть класс bean, который нужно преобразовать в Json. Проблема в том, что у поля есть аннотации настраиваемых свойств.
@Descriptors(type = "property", dbColumn = "currency")
private String currency = USD; //(initializing for brevity)
Я хочу, чтобы Json выглядел так:
{
"currency": {
"type": "property",
"dbColumn": "currency",
"value": "USD"
}
}
Подробный способ - создать триаду утилит и преобразовать аннотации в поля, а затем использовать это для json. Есть ли другой лучший способ добиться этого?
В этом случае я фактически конвертирую устаревший код. Текущий код делает следующее: class Security <T> {private static final Security sec = add (new Security <String> (String.class, "currency", "property")); Я отображаю этот объект в более простой объект, который затем можно сопоставить с JSON. Также в сфере безопасности существует около 100+ таких полей.
В общем, вы можете написать собственный сопоставитель объектов Jackson Object Mapper, который проверяет поля вашего класса Java на предмет конкретных аннотаций, считывает атрибуты аннотации и использует их в процессе сериализации. Я не думаю, что это хороший подход. Я считаю, что вам следует создать новый слой с объектами DTO, которые являются производными от устаревших и упрощены так, как вы хотите, и использовать эти объекты в процессе сериализации.




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