Spring Jackson, отображающий верблюжий верблюд или отключающий преобразование - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть служба Java Spring Boot 2, которая выполняет вызовы REST нескольким службам. Все возвращают snake_case, кроме одного, который возвращает camelCase. Если я настраиваю приложение для ожидания snake_case (файл свойств: spring.jackson.property-naming-strategy=SNAKE_CASE), каждый класс отображается правильно, кроме того, который получает camelCase JSON.

Я хотел аннотировать класс:

@JsonNaming(PropertyNamingStrategy.CamelCaseStrategy.class)

, но такой стратегии не существует. Я попытался UpperCamelCaseStrategy и LowerCase Strategy, и это не удается на обоих.

Работает иначе - закомментируйте глобальные настройки в файле свойств, добавьте @JsonNaming SnakeCaseStrategy в каждый класс, кроме проблемного. Но это кажется действительно неловким и неэффективным.

Это также работает, если я вручную аннотирую все 68 свойств в файле класса, но это еще более неэффективно.

Если бы я мог отключить отображение для этого одного класса, может решить проблему, но я не нашел способа сделать это.

Пример входной выдержки:

{
    "site": "501",
    "referencePath": "control_room_temp/temp",
    "alarmType": "OUT OF RANGE",
...

Классовая выдержка:

@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonNaming(PropertyNamingStrategy.UpperCamelCaseStrategy.class)
public class RawAlarmData {
    private String site; // single word works
    @JsonProperty("referencePath")
    private String referencePath; // manual mapping works
    private String alarmType;  // fails in all strategies
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...