【发布时间】:2016-11-12 16:09:01
【问题描述】:
基本上我是从一个文本文件生成一个 json Terraform 文件,但我无法以正确的方式对其进行格式化:
我希望完成的 Terraform 文件如下所示:
{
"resource": {
"aws_route53_record": {
"analytics": {
"name": "analytics",
"records": ["1.2.3.4"],
"ttl": "1800",
"type": "A"
},
"analytics-test": {
"name": "analytics-test",
"records": ["1.2.3.4"],
"ttl": "300",
"type": "A"
}
}
}
}
这是 Terraform 解析 json 所需的格式。
所以我在 Python 中加载文本文件,并遍历每一行,生成一个列表列表,如下所示:
records = [["analytics", "1.2.3.4", "1800", "A"],["analytics-test", "1.2.3.4", "300", "A"]]
我现在生成文件的代码如下所示
我创建了一个包含顶级变量的 dict 占位符,如下所示:
json_object = {'resource': {'aws_route53_record': None}}
然后我查看记录并分配适当的值:
for each_list in data:
terrarecord = {
each_list[0]:{
"name": each_list[0],
"type": each_list[2],
"ttl": each_list[1],
"records": [each_list[3].replace('\n', '')]
}
}
record_holder.append(terrarecord)
record_holder 对象是一个空列表,然后我用它来填充json_objects,如下所示:
json_object['resource']['aws_route53_record'] = record_holder
这在完成的文件中给我的是:
{
"resource": {
"aws_route53_record": [{
"analytics": {
"ttl": "1800",
"records": ["173.194.245.129"],
"name": "analytics",
"type": "A"
}
}, {
"analytics-test": {
"ttl": "300",
"records": ["130.211.89.168"],
"name": "analytics-test",
"type": "A"
}
}]
}
}
那么如果不添加我的小循环所做的额外[] 和{}s,是否有更简单的方法来做到这一点?
【问题讨论】: