如何在YAML中创建嵌套列表?我想得到:
{"Hello": ["as", ["http://", ["cat"]]]}
这是我的YAML不起作用(使用pyYaml):
Hello:
- "as"
- "http://"
- cat
我做错了什么?
的 的 ** * ** * ** * 的更新: * ** * ** * ****
具体来说,我正在尝试从YAML生成以下JSON:
"URL" : {
"Description" : "URL of the website",
"Value" : { "Fn::Join" : [ "", [ "http://", { "Fn::GetAtt" : [ "ElasticLoadBalancer", "DNSName" ]}]]}
}
这是我工作中最接近的YAML,但它并不能满足我的需求。
YAML是:
Outputs:
URL:
Description: URL of the website
Value:
"Fn::Join":
- ""
- "http://"
- "Fn::GetAtt":
- ElasticLoadBalancer
- DNSName
这导致:
"URL": {
"Description": "URL of the website",
"Value": {
"Fn::Join": [
"",
"http://",
{
"Fn::GetAtt": [
"ElasticLoadBalancer",
"DNSName"
]
}
]
}
}
这几乎是正确的,但在“”之后应该有一个嵌套列表,而不仅仅是另一个列表项。我该如何解决这个问题?
(PS这将被输入API,因此输出必须完全匹配)
答案 0 :(得分:19)
答案是:
URL:
Description: URL of the website
Value:
"Fn::Join":
- ""
- - "http://"
- "Fn::GetAtt":
- ElasticLoadBalancer
- DNSName
(参见http://pyyaml.org/wiki/PyYAMLDocumentation#YAMLsyntax - “块序列可以嵌套”)
答案 1 :(得分:3)
尝试:
Hello:
["as",
["http://",
[cat]
]
]
Json输出:
{
"Hello": [
"as",
[
"http://",
[
"cat"
]
]
]
}
答案 2 :(得分:1)
从新的line启动嵌套列表。使用这种方法很容易理解。
尝试这样:
<强> YAML 强>
Value:
"Fn::Join":
- ""
-
- "http://"
- "Fn::GetAtt":
- ElasticLoadBalancer
- DNSName
等效JSON
{
"URL": {
"Description": "URL of the website",
"Value": {
"Fn::Join": [
"",
[
"http://",
{
"Fn::GetAtt": [
"ElasticLoadBalancer",
"DNSName"
]
}
]
]
}
}
}