Comment puis-je créer des listes imbriquées dans YAML? Je veux obtenir:
{"Hello": ["as", ["http://", ["cat"]]]}
Voici mon YAML qui ne fonctionne pas (avec pyYaml):
Hello:
- "as"
- "http://"
- cat
Qu'est-ce que je fais mal?
** * ** * ** * Mise à jour: * ** * ** * ****
Plus précisément, j'essaie de générer le JSON suivant à partir de YAML:
"URL" : {
"Description" : "URL of the website",
"Value" : { "Fn::Join" : [ "", [ "http://", { "Fn::GetAtt" : [ "ElasticLoadBalancer", "DNSName" ]}]]}
}
Voici le YAML le plus proche sur lequel je travaille, mais il ne donne pas tout à fait ce dont j'ai besoin.
YAML c'est:
Outputs:
URL:
Description: URL of the website
Value:
"Fn::Join":
- ""
- "http://"
- "Fn::GetAtt":
- ElasticLoadBalancer
- DNSName
Il en résulte:
"URL": {
"Description": "URL of the website",
"Value": {
"Fn::Join": [
"",
"http://",
{
"Fn::GetAtt": [
"ElasticLoadBalancer",
"DNSName"
]
}
]
}
}
C'est presque correct, mais après "" il devrait y avoir une liste imbriquée, pas juste un autre élément de la liste. Comment puis-je réparer cela?
(PS Cela va être introduit dans une API donc la sortie doit correspondre complètement)
Et la réponse est:
URL:
Description: URL of the website
Value:
"Fn::Join":
- ""
- - "http://"
- "Fn::GetAtt":
- ElasticLoadBalancer
- DNSName
(voir http://pyyaml.org/wiki/PyYAMLDocumentation#YAMLsyntax - "les séquences de blocs peuvent être imbriquées")
Essayer:
Hello:
["as",
["http://",
[cat]
]
]
Sortie Json:
{
"Hello": [
"as",
[
"http://",
[
"cat"
]
]
]
}
démarrer la liste imbriquée à partir d'une nouvelle ligne . en utilisant cette approche, il est facile de comprendre.
Lisez les articles this et this . Ils ont beaucoup d'exemples.
essayez comme ceci:
[~ # ~] yaml [~ # ~]
Value:
"Fn::Join":
- ""
-
- "http://"
- "Fn::GetAtt":
- ElasticLoadBalancer
- DNSName
JSON équivalent
{
"URL": {
"Description": "URL of the website",
"Value": {
"Fn::Join": [
"",
[
"http://",
{
"Fn::GetAtt": [
"ElasticLoadBalancer",
"DNSName"
]
}
]
]
}
}
}