Как сопоставить Ямл с изображением змеи с полями Java с Джексоном - PullRequest
0 голосов
/ 30 октября 2018

У меня есть файл yaml с ключами в верблюжьем футляре, как

---
start_date: "2018-09-01"
day_date: "2018-09-01"

userProduct:
    sales_channel: "1"
    user_group: "1" 

И у меня есть следующие Java PoJos

public class Input{
    private String startDate = "";
    private String dayDate = "";

    @JsonUnwrapped
    private Product userProduct;

   // getters/setters
}

public class Product {
   private salesChannel = "";
   private userGroup = "";

   // getters/setters
}

Теперь я хочу прочитать это с Джексоном, и я подумал, что будет достаточно использовать

ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
return objectMapper.readValue(inputData, Input.class); // inputData is the yaml as string

но это не заполняет вложенные объекты. startDate и dayDate из объекта Input верны, но, например, input.getUserProduct().getSalesChannel() возвращает пустую строку.

Я также пытался использовать user_product вместо userProduct в файле yaml, но это ничего не меняет.

Что здесь не так? Как я могу определить случай змеи в ямле и верблюд в Яве?

1 Ответ

0 голосов
/ 30 октября 2018

Я нашел решение моей проблемы, заключающееся в удалении вложенных объектов. При наличии всех полей внутри класса Input и удалении Product все работает как положено.

Тем не менее я держу этот вопрос открытым, так как мне все еще интересно, можно ли этого достичь с помощью вложенных объектов

...