Как изменить ключ JSON из кейса верблюда в чехол для змеи для POJO?

#java #wiremock

Вопрос:

Я провожу тестирование с помощью Wiremock, и у меня есть следующий пример для POJO:

 @Data  public class DataResponse {  private Supply supply;  private static class Supply {  private Listlt;TimeSeriesgt; timeSeries;  }  @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)  public static class TimeSeries {  private LocalDate date;  }  }  

И я заглушаю какой-то внешний API, который должен реагировать на это POJO как json:

 DataResponse dataResponse = DataResponse.builder()  .supply(DataResponse.Supply.builder()  .timeSeries(List.of(  DataResponse.TimeSeries.builder()  .date("2021-11-16")  build()  ))  .build()  .build()    String jsonDataResponse = mapper.writeValueAsString(dataResponse); //mapper is instance of ObjectMapper    stubFor(WireMock.get(urlEqualTo("/someUrl"))  .willReturn(aResponse()  .withBody(jsonDataResponse)));  

Проблема в том, что когда я выполняю сериализацию с помощью ObjectMapper, я получаю «Временные ряды» вместо «временные ряды». Есть ли какой-либо способ получить правильный формат строки JSON только с изменениями в тестовом файле?

Ответ №1:

timeSeries это поле Supply , вы должны изменить место @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) , перейти в Supply класс, как показано ниже

 @Data  public class DataResponse {  private Supply supply;  @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)  private static class Supply {  private Listlt;TimeSeriesgt; timeSeries;  }  public static class TimeSeries {  private LocalDate date;  }  }