У меня есть несколько файлов yaml, которые нужно разобрать, и они имеют одинаковую структуру.
schema: "1.0.0"
id: test
version: "1.2.3"
dependency :
- name: ui
type: runner
cwd: /ui
install:
- name: api
group: test
properties:
name: app
url: appUrl
- name: backend
type: mongoDb
path: be
install:
- name: db
type: mongo
provides:
- name: api
properties:
url: url
Раздел схемы является обязательным для всех yaml, которые приложение должно получать всегда.
Тег зависимости может содержать от 1 до n записей с обязательными полями: имя, тип, cwd.
Тег зависимости может (или нет) содержать раздел
install
сname
иproperties
, что является обязательным.Тег зависимости может (или нет) содержать раздел
provides
сname
, что является обязательным.У установки могут быть свойства, и у поставок также могут быть свойства.
Я использую парсер yaml для анализа файлов, но мой вопрос в том, как в Golang я могу построить структура, что когда я разбираю документ, он автоматически заполняет основную структуру и включает подструктуры (например, разделы зависимостей/установки)
Я пробовал что-то вроде
type main struct {
schema struct {
schema string
id int
version string
}
dependency struct {
name string
type string
cwd string
install struct {
name string
}
}
В разделе установки это может быть группа, тип или и то, и другое, а также может быть раздел свойств, поэтому я не уверен, как создать некоторую общую/расширяемую структуру, которую я использую для анализа документа (у документа есть закрытый список свойств , то что я поставил в примере опишу самые варианты)
Я использую эту библиотеку для анализа документа