[英]Best way to manipulate variables inside a JSON config file in Python3
[英]Using variables inside json file
我需要定義一次變量並在整個json文件中使用它。
這是我的MWE :(改編自這里 )
{
"variables": {
"my_access_key": "abc",
"my_secret_key": "def"
},
"objectB": {
"type": "1",
"access_key": "{{user `my_access_key`}}",
"secret_key": "{{user `my_secret_key`}}"
},
"objectA": {
"type": "2",
"access_key": "{{user `my_access_key`}}",
"secret_key": "{{user `my_secret_key`}}"
}
}
對象objectB
和objectA
的access_key
字段必須等於“ abc
”,這是由我在文件開頭定義的。
我怎樣才能在python中實現這個目標?
在YAML中,您可以定義變量,為它們設置引用名稱,然后在文件中重復使用它們。
JSON不提供這種功能,您必須逐個地設置這些值。
import json
access = "AAA"
secret = "XXX"
dct = {"variables": {"my_access_key": access, "my_secret_key": secret},
"objectB": {"type": "1", "access_key": access, "secret_key": secret},
"objectA": {"type": "2", "access_key": access, "secret_key": secret}
}
json_str = json.dumps(dct, indent=True)
print json_str
打印什么
{
"objectA": {
"access_key": "AAA",
"secret_key": "XXX",
"type": "2"
},
"variables": {
"my_secret_key": "XXX",
"my_access_key": "AAA"
},
"objectB": {
"access_key": "AAA",
"secret_key": "XXX",
"type": "1"
}
}
您可以將YAML功能用於此目的。 由於YAML很容易編輯,因此它可能是配置文件的好選擇。
在使用它之前,請確保安裝pyyaml:
$ pip install pyyaml
然后代碼(在variables
修改名稱以滿足我們的需要):
import json
import yaml
yaml_str = """
variables: &keys
access_key: abc
secret_key: def
objectB:
<<: *keys
type: "1"
objectA:
<<: *keys
type: "2"
"""
dct = yaml.load(yaml_str)
json_str = json.dumps(dct, indent=True)
print json_str
打印
{
"objectA": {
"access_key": "abc",
"secret_key": "def",
"type": "2"
},
"variables": {
"access_key": "abc",
"secret_key": "def"
},
"objectB": {
"access_key": "abc",
"secret_key": "def",
"type": "1"
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.