Какой должна быть структура .yaml для класса со следующей схемой

У меня есть класс Java, который используется для установки объектов после чтения файла .yml. Я застрял в точке, где я не могу установить значения в файле .yml. Ниже приведено представление класса. Отображения - это список, и опять же, есть две пары ключ-значение. Офисы - это список строк, а присваивание - просто строка.

public class System {

    public Employee employee;

    public List<Mapping> mappings;


    public System(Employee emplyoee, List<Mapping> mappings) {
        super();
        this.employee = employee;
        this.mappings = mappings;
    }

    public Employee getEmployee() {
        return employee;
    }

    public void setSankalp(Employee sankalp) {
        this.employee = sankalp;
    }

    public List<Mapping> getMappings() {
        return mappings;
    }

    public void setMappings(List<Mapping> mappings) {
        this.mappings = mappings;
    }

    public static class Employee {

        public String name;
        public String work;


        public Employee(String name, String work) {
            super();
            this.name = name;
            this.work = work;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getWork() {
            return work;
        }
        public void setWork(String work) {
            this.work = work;
        }
    }

    public static class Mapping {

        public String assignment;
        public List<String> offices;


        public Mapping(String assignment, List<String> offices) {
            super();
            this.assignment= assignment;
            this.offices= offices;
        }
        public String getAssignment() {
            return assignment;
        }
        public void setAssignment(String assignment) {
            this.assignment= assignment;
        }
        public List<String> getOffices() {
            return offices;
        }
        public void setOffices(List<String> offices) {
            this.offices= offices;
        }
    }
}

public class SystemWrapper {
    public System system;

    public SystemWrapper(System system) {
        super();
        this.system = system;
    }

    public System getSystem() {
        return system;
    }

    public void setSystem(System system) {
        this.system = system;
    }
}

Какова может быть структура .yaml? Я пытаюсь со следующим .yaml, который не работает вообще.

system:
 employee:
  name: "andy"
  work: "eng"
 mappings:
  - offices: ["new york", "dc"]
    assignment: "full time"

Всего 2 ответа


Попробуйте следующее:

system:
 employee:
  name: "andy"
  work: "eng"
 mappings:
   -mapping:
     offices: ["new york", "dc"]
     assignment: "full time"
   -mapping:
     offices: ["yorkshire", "dc"]
     assignment: "part time"

В вашем коде mappings есть класс List of Mapping .


Ваше отображение yaml выглядит хорошо. Я попробовал это в примере приложения Spring, и это сработало. Что мне пришлось изменить, так это удалить конструктор из классов и оставить значения по умолчанию. Поэтому попробуйте удалить это:

public System(Employee emplyoee, List<Mapping> mappings) {
...
public Mapping(String assignment, List<String> offices) {
...
public Employee(String name, String work) {
...
public SystemWrapper(System system) {

Также вы неправильно setEmployee в setEmployee :

public Employee getEmployee() {
    return employee;
}

public void setSankalp(Employee sankalp) {
    this.employee = sankalp;
}

Кроме того, в этом блоге вы можете прочитать больше о разборе yaml и протестировать различные подходы.


Есть идеи?

10000