Преобразовать объект свойств Yaml в объект Java - PullRequest
2 голосов
/ 25 марта 2020

Вот мой файл свойств Yaml

bb:
  employees:
   -
    employee1:
      name: Syed
      locations:
        - HYD
        - MAA
   -
    employee2:
      name: Adhil
      locations:
        - BOM
        - DEL

Я хочу преобразовать объект в мой POJO в моем приложении. Однако я не могу это сделать, он всегда возвращает ноль.

Есть ли что-то, чего мне не хватает?

@Data

@Builder
 @AllArgsConstructor
@NoArgsConstructor
@Configuration
@ConfigurationProperties(prefix = "bb")
public class EmpConfig {

    EmployeeDetails employees;
}

EmployeeDetails Class

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Configuration

public class EmployeeDetails {

    List<Map<String, List<String>>> details;
}

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Это сработало для меня без изменения вашей структуры.

YAML выглядит так:

bb:
  employees:
      employee:
        - name: Syed
          locations:
            - HYD
            - MAA

        - name: Adhil
          locations:
            - BOM
            - DEL

Вывод

enter image description here

Надеюсь, это поможет!

1 голос
/ 25 марта 2020

Это сработало у меня следующим образом:

YAML (называемый application.yaml) (дефисы удалены до employeeIds (employee1, employee2))

bb:
  employees:
    employee1:
      name: Syed
      locations:
        - HYD
        - MAA
    employee2:
      name: Adhil
      locations:
        - BOM
        - DEL

Класс конфигурации:

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Configuration
@ConfigurationProperties(prefix = "bb")
public class EmpConfig {
    private Map<String, EmployeeDetails> employees;
}

EmployeeDetails:

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class EmployeeDetails {
    private String name;
    private List<String> locations;
}

Таким образом, в основном у вас проблемы с синтаксисом и типами данных, поэтому Spring не может проанализировать файл конфигурации.

...