Парс ямл с ключами выдаю ошибки - PullRequest
0 голосов
/ 05 марта 2019

У меня следующий yaml, который мне нужно проанализировать, я пробовал со следующим


Build-t:
  before: test1
    - value : dddd 
       -  bbb: zzzz

  after: test2
     - value: bbb
        - aaa: aaaa


Я пробовал со следующим:

type root struct{
 build type Build `yaml:"Build-t,omitempty"`
} 


type Build struct {
    Before map[string]interface{} `yaml:"before,omitempty"`
    After map[string]interface{} `yaml:"after,omitempty"`
 }

Теперь, когдаЯ анализирую это, я получил ошибку,

Что мне нужно, это получить значения из объекта before и after, которые являются жестко закодированным значением в yaml. И все остальные значения под ним могут быть добавлены синонимом.для этого я поставил его как interface

кстати, если я изменю корень на этот, он работает, и я вижу все поля под Build-t, но before and after подобны ключам ...

type root struct{
 build type map[string]interface{} `yaml:"Build-t,omitempty"`
} 

ошибка:

line 6: cannot unmarshal !!str `test1` into map[string]interface {}
        line 7: cannot unmarshal !!str `test2` into map[string]interface {}

см. Действительный yaml здесь https://codebeautify.org/yaml-validator/cb705458

1 Ответ

2 голосов
/ 05 марта 2019

Звучит правильно - YAML недействителен. Вы имели в виду что-то подобное?

Build-t:
 before:
   test1:
     - value: dddd
     - bbb: zzzz

 after:
   test2:
     - value: bbb
     - aaa: aaaa

Помните, что пробелы важны, и это структура значения ключа - поэтому ваши значения могут быть либо строками, либо подструктурами, а не обоими.

Кроме того, этот валидатор yaml ... Я не могу заставить его объявить что-либо недействительным!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...