Мне нужна возможность сериализации поля в объекте на основе JsonView.Это не обязательно должен быть JsonView, это просто то, что я изучал.В основном, используя аннотацию @JsonView для класса RestController, он сериализует мой POJO.Однако у меня есть представление пользователя и администратора, где есть объект:
Секреты карты;
Что для представления администратора, я хочу, чтобы оба ключа: значение отображалось и сериализовалось, но для пользователяЯ хотел бы только получить список ключей или, если это проще, сохранить карту, но только показать ключ, и все значения переключаются на «****» 4 звездочки или что-то в этом роде.
Я думал о том, чтобы иметь два геттера, ноаннотация JsonView не работает так, когда два получателя могут иметь разные представления, и Джексон знает, какой из них вызывать.
Я не уверен, что JsonView - лучшая вещь здесь.Возможно, это метод JsonGetter, который сериализует на основе представления или какого-то другого пользовательского сериализатора, но я думаю, что может быть более простой способ сделать это с Джексоном и несколькими аннотациями
Что я хочу сделать, это:
Person.java
Map<String,String> secrets;
Это будет сериализовано в (для администратора):
{
"person":{
"secrets":{
"password":"123456",
"creditCard":"1234 5678 9101"
}
}
}
Это будет сериализовано в (для пользователя):
{
"person":{
"secrets":{
"password":"****",
"creditCard":"****"
}
}
}
Однако, что бы я мог себе представить, что я мог сделатьэто что-то вроде
@JsonView(View.User.class)
Map<String,String> getSecrets(){
this.secrets.forEach(value -> "****") //code would be different but basically setting all values to ****
return secrets;
}
@JsonView(View.Admin.class)
Map<String,String> getSecrets(){
//Returning secrets as they should be
return secrets;
}