Различная сериализация/десериализация с помощью Java-записей

Как использовать разные имена для сериализации и десериализации при использовании записей?

Джава

public record testRecrd(@JsonProperty("foo bar") String fooBar){}

JSON

{
  foo bar : "test"
}

Могу ли я изменить эту запись или есть ли какой-либо модификатор, который я могу использовать, чтобы при десериализации записи я получал

{
 fooBar : "test"
} 

Кстати, согласно соглашению Java, имя класса должно начинаться с заглавной буквы.

Basil Bourque 08.03.2024 03:12
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
63
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам нужно использовать @JsonAlias ​​ для десериализации:

Аннотация, которую можно использовать для определения одного или нескольких альтернативных имен свойства, принимаемых во время десериализации в качестве альтернативы официальному имени.

public record TestRecord(@JsonProperty("foo bar") @JsonAlias("fooBar") String fooBar) {
}

Джексон сначала будет искать foo bar и только если он отсутствует fooBar.

Исправлено использование @JsonAlias ​​, как предложено в принятом ответе.

public record testRecrd(@JsonAlias("foo bar") String fooBar){}

Json возвращает:

{
 fooBar : "test"
}

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