【发布时间】:2016-09-20 22:50:32
【问题描述】:
我想采用以下 JSON 并将其转换为多个字典,这样我就可以仅访问该环境的顶级节点下的每个设置。这是一个配置文件,它将维护不同环境的设置,我希望能够获取顶级节点/环境,然后仅针对该环境使用所有底层节点/设置。
我的 JSON 示例
{“默认”:
{
"build": { "projectKey": "TEST", "buildKey": "ME" }, "headers": { "json": "application/json", "xml": "application/xml" }},
“开发”:{
"build": { "projectKey": "TEST", "buildKey": "YOU" }, "headers": { "json": "application/json", "xml": "application/xml" }},
“qa”:{
"build": { "projectKey": "TEST", "buildKey": "THEM" }, "headers": { "json": "application/json", "xml": "application/xml" }} }
我尝试通过提取顶级键来执行此操作,但看不到如何使用 Python 将它们分解为多个字典,因此我可以收集每个环境的设置并在不重复的情况下使用它们。通过检查节点的 len 检查我可以看到的底层节点,看看下面是否还有更多节点,但是从顶层开始并将每个节点拆分为自己的 dict 我无法解决。
或者也许有比我不知道的更好的方法来做到这一点。下面的长度可能会有所不同,但如果我可以将它们分开,那应该是无关紧要的。
【问题讨论】:
-
“将其压平成字典” - 你将不得不解释你的实际意思。
-
@user2357112 这样会更清楚吗?扁平化是我为此考虑的一个术语,而不是 JSON 节点。不应该在这里使用它
-
不,还不清楚。你认为“JSON 节点”是什么,为什么你认为你还没有字典?听起来您确实已经有了字典。那,或者你有一个字符串,在这种情况下你会使用
json.loads(your_string)来解析它并得到一个字典,但听起来你已经有了一个字典。 -
听起来您可能只需要更熟悉循环和索引。例如,您可以使用
for env_name, env_settings in your_dict.items()遍历字典的条目。
标签: python json dictionary configuration