У меня есть конкретный вариант использования, который я пытаюсь разрешить с помощью пользовательской сериализации (GSON) и пользовательских аннотаций Java.
Я читаю данные json из источника, преобразовываю их и записываюэто в раковину.Мой Json имеет следующую структуру: (Преобразованный Json имеет ту же структуру, но имеет разные значения для идентификаторов, которые должны быть преобразованы)
{
"someId": "abc",
"otherId": "efgh",
"metadata": {"id": "xyz", "count": 5},
"cardId": "qwe123"
"version": 1.0
}
Это переводит в следующую модель:
public class Customers {
@Transform private String someId; // transform this identifier
@Transform private String otherId; // transform this identifier
private CustomerMetadata metadata;
private String cardId; // Do not transform
private long version;
}
и
public class CustomerMetadata {
@Transform private String id; // transform this identifier
private int count;
}
У меня есть вариант использования, в котором я хочу преобразовать определенные идентификаторы.Это преобразование происходит другим сервисом, который принимает список идентификаторов, преобразует его и возвращает преобразованные идентификаторы (типа string) в том же порядке.
В идеале я бы хотел вызвать эту службу преобразования один раз для одного файла json.Моя идея заключается в том, чтобы добиться этого, написав собственный сериализатор или десериализатор.Сериализатор будет искать аннотацию @Transform для захвата списка идентификаторов, вызывать службу преобразования для получения списка преобразованных идентификаторов и, наконец, заменять соответствующие идентификаторы преобразованными значениями.
Кроме того, мне нужно добитьсяэто общий способ, так что мой сериализатор не зависит от конкретной модели (POJO).
Есть идеи, как с этим справиться?Я открыт для использования Джексона, если он предоставляет аналогичную функциональность (хотя я не нашел такого варианта использования)