Добавление элементов на карту в файле YAML

Можно ли добавить элемент в карту в файле YAML после того, как карта уже определена?

Например, если у меня есть файл:

fruits:
bananas:
quantity: 4
apples:
quantity: 2
grapes:
quantity: 37

vegetables:
lettuce:
quantity: 2
beets:
quantity: 4

и затем позже поймете, что моя карта «фрукты» не завершена, могу ли я что-нибудь сделать позже в файле (т. е. после определения карты «овощи»), чтобы добавить другой фрукт к существующей карте? Что-то где:

fruits:
oranges:
quantity: 4

будет добавлен к существующей карте вместо перезаписи?

Другими словами, есть ли правильный способ добавить «апельсины» к существующей карте «фрукты» в другом месте файла?

Немного предыстории: Я планирую использовать yaml-cpp с C ++. Я использую YAML в качестве формата входного файла для программы, которую я пишу. Я проанализирую файл, который создает пользователь, и переведу структуру в объекты в моей программе. Я хотел бы иметь возможность добавлять элементы на карту, потому что объекты (в данном примере «фрукты») обычно разбрасываются во входном файле, когда пользователь понимает, что они необходимы или используются рядом с другими объектами, которые на них ссылаются.

0

Решение

Неверно YAML иметь повторяющийся ключ. Например, следующее недействительно YAML:

fruits: foo
fruits: bar

Если ваш файл YAML начинается с:

fruits: whatever
bar: baz

тогда нет возможности изменить значение, связанное с ключом fruits добавив в файл. Различные парсеры YAML могут интерпретировать повторяющиеся ключи по-своему, но спецификация определяет это как ошибку.

Вы можете постобработать файл YAML, если хотите, например:

fruits1: whatever
bar: baz
fruits2: something else

а затем в вашем коде, просто объедините их значения, связанные с fruits1 а также fruits2 (а также fruits3, …) как вам нравится.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]