yamlencode Функция
yamlencode кодирует заданное значение в строку, используя блочный синтаксис YAML 1.2.
Эта функция сопоставляет значения языка OpenTofu с тегами YAML следующим образом:
| Тип OpenTofu | Тип YAML |
|---|---|
string |
!!str |
number |
!!float или !!int
|
bool |
!!bool |
list(...) |
!!seq |
set(...) |
!!seq |
tuple(...) |
!!seq |
map(...) |
!!map |
object(...) |
!!map |
| Значение null | !!null |
yamlencode использует неявный синтаксис для всех перечисленных выше типов и поэтому не создает явные теги YAML.
Поскольку формат YAML не может полностью представить все типы языка OpenTofu, передача результата yamlencode в yamldecode не вернет идентичное значение. Однако правила автоматического преобразования типов языка OpenTofu означают, что на практике это редко становится проблемой.
YAML является надмножеством JSON, поэтому, когда это возможно, мы рекомендуем вместо этого создавать JSON с помощью jsonencode, даже если удаленная система поддерживает YAML. Синтаксис JSON эквивалентен YAML с поточным стилем, и OpenTofu может отображать подробную информацию о структурных изменениях значений JSON в планах, тогда как YAML с блочным стилем OpenTofu рассматривает как обычную многострочную строку. Однако создание YAML может улучшить читаемость, если полученное значение будет непосредственно просматриваться или изменяться людьми в удаленной системе.
Примеры
> yamlencode({"a":"b", "c":"d"})
"a": "b"
"c": "d"
> yamlencode({"foo":[1, 2, 3], "bar": "baz"})
"bar": "baz"
"foo":
- 1
- 2
- 3
> yamlencode({"foo":[1, {"a":"b","c":"d"}, 3], "bar": "baz"})
"bar": "baz"
"foo":
- 1
- "a": "b"
"c": "d"
- 3yamlencode всегда использует YAML «блочный стиль» для отображения отображений и последовательностей, если только отображение или последовательность не пусты. Чтобы создать YAML с поточным стилем, используйте вместо этого jsonencode: поточный стиль YAML является надмножеством синтаксиса JSON.
Связанные функции
-
jsonencodeвыполняет аналогичную операцию, используя JSON вместо YAML. -
yamldecodeвыполняет обратную операцию — декодирует строку YAML, чтобы получить представленное в ней значение.
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.10/language/functions/yamlencode/