Джексон - DTO Int в строку преобразования - PullRequest
0 голосов
/ 24 января 2019

Работа на клиенте REST, который вызывает другой сервер, который возвращает следующий объект:

public class ObjectOriginal {
   private int id;
   private String name;

   // constructor/getters/setters
}

Мне нужно скрыть идентификатор.Для этого я использую уже существующий сервис, который преобразует идентификатор в уникальную сгенерированную строку, так что человек, вызывающий мой сервис, не знает РЕАЛЬНОГО идентификатора, но все же может запросить информацию об этом с помощью уникальной строки.

Так что я в основном пытаюсь вернуть вызывающему объекту этот объект:

public class ObjectNew {
   private String id;
   private String name;

   // constructor/getters/setters
}

Нужно ли иметь копию ObjectOriginalDTO + создать ObjectNew DTO + создать средство отображения для перехода от одного к другому,Или я могу настроить Джексона для десериализации поля id как String, а не как int?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Если вы не хотите иметь пользовательский десериализатор, вы можете иметь:

public class ObjectNewDto {
   private String id;
   private String name;

   // constructor/getters/setters
}

и другой объект:

public class ObjectOriginal {
   private int id;
   private String name;
 // construxtor/getters/settes
}

Теперь, после проверки ObjectNewD, вы можете отобразить его через ваш обфускаторобслуживание в ObjectOriginal, затем проверка оригинала этого объекта и так далее ...

0 голосов
/ 24 января 2019

Вы можете сделать это, используя собственный сериализатор / десериализатор. Вы должны внедрить ваш сериализатор / десериализатор, который будет расширяться соответственно BeanSerializerModifier/BeanDeserializerModifier и настраивать ваш модуль с ними, например, или использовать базовое решение для аннотаций, как описано в этом учебном пособии , в Интернете имеется множество ссылок на такая вещь тогда у вас будет больше контроля над картой вашего id.

...