У меня есть служба 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