tutorial - Listas anidadas en yaml
yaml usos (3)
¿Cómo puedo crear listas anidadas en YAML? Quiero tener:
{"Hello": ["as", ["http://", ["cat"]]]}
Aquí está mi YAML que no funciona (con pyYaml):
Hello:
- "as"
- "http://"
- cat
¿Qué estoy haciendo mal?
** * ** * ** * Actualización: * ** * ** * ****
Específicamente estoy tratando de generar el siguiente JSON desde YAML:
"URL" : {
"Description" : "URL of the website",
"Value" : { "Fn::Join" : [ "", [ "http://", { "Fn::GetAtt" : [ "ElasticLoadBalancer", "DNSName" ]}]]}
}
Aquí está el YAML más cercano que tengo trabajando, pero no da todo lo que necesito.
YAML es:
Outputs:
URL:
Description: URL of the website
Value:
"Fn::Join":
- ""
- "http://"
- "Fn::GetAtt":
- ElasticLoadBalancer
- DNSName
Esto resulta en:
"URL": {
"Description": "URL of the website",
"Value": {
"Fn::Join": [
"",
"http://",
{
"Fn::GetAtt": [
"ElasticLoadBalancer",
"DNSName"
]
}
]
}
}
Esto es casi correcto, pero después de "" debería haber una lista anidada, no solo otro elemento de la lista. ¿Cómo puedo arreglar esto?
(PS Esto se incluirá en una API, por lo que la salida debe coincidir completamente)
Tratar:
Hello:
["as",
["http://",
[cat]
]
]
Salida de Json:
{
"Hello": [
"as",
[
"http://",
[
"cat"
]
]
]
}
Y la respuesta es:
URL:
Description: URL of the website
Value:
"Fn::Join":
- ""
- - "http://"
- "Fn::GetAtt":
- ElasticLoadBalancer
- DNSName
(vea http://pyyaml.org/wiki/PyYAMLDocumentation#YAMLsyntax - "las secuencias de bloques se pueden anidar")
iniciar lista anidada desde una nueva line . usando este enfoque es fácil de entender.
Lee this y this artículos. Tienen muchos ejemplos.
prueba de esta manera:
YAML
Value:
"Fn::Join":
- ""
-
- "http://"
- "Fn::GetAtt":
- ElasticLoadBalancer
- DNSName
JSON equivalente
{
"URL": {
"Description": "URL of the website",
"Value": {
"Fn::Join": [
"",
[
"http://",
{
"Fn::GetAtt": [
"ElasticLoadBalancer",
"DNSName"
]
}
]
]
}
}
}