动态读取嵌套 JSON
Reading nested JSON dynamically
我目前正在尝试一些我不确定是否可行的东西。
我正在尝试将 API 值从 JSON 字符串(具有嵌套值)映射到数据库字段,但我希望它是动态的。
在下面的 YAML 示例中,键是数据库字段名称,数据库字段值是从 JSON 字符串(“-”分隔嵌套值)中获取信息的位置。我能够阅读 YAML 配置,但我不明白如何将其转换为 python 代码。如果它是动态的,我不知道我需要放多少 []。
YAML:(PYYAML 包)
employer: "properties-employer_name"
...
employee_name: "employee"
Python代码:(Python3.8)
json_data = { properties: {employer_name: "XYZ"}, employee: "Sam" }
employer = json_data["properties"]["employer_name"] # How Do I add [] based on how nested the value is dynamically?
employee = json_data["employee"]
非常感谢!
您可以尝试这样的操作:
def get_value(data, keys):
# Go over each key and adjust data value to current level
for key in keys:
data = data[key]
return data # Once last key is reached return value
如果你在 yaml 中是这样的话,你可以通过拆分 '-' 来获取你的密钥,所以在我的示例中,我只是将值保存到一个字符串中并以这种方式进行:
employer = "properties-employer_name"
keys = employer.split('-') # Gives us ['properties', 'employer_name']
现在我们可以调用上面定义的 get_value 函数:
get_value(json_data, keys)
哪个returns'XYZ'
我目前正在尝试一些我不确定是否可行的东西。
我正在尝试将 API 值从 JSON 字符串(具有嵌套值)映射到数据库字段,但我希望它是动态的。
在下面的 YAML 示例中,键是数据库字段名称,数据库字段值是从 JSON 字符串(“-”分隔嵌套值)中获取信息的位置。我能够阅读 YAML 配置,但我不明白如何将其转换为 python 代码。如果它是动态的,我不知道我需要放多少 []。
YAML:(PYYAML 包)
employer: "properties-employer_name"
...
employee_name: "employee"
Python代码:(Python3.8)
json_data = { properties: {employer_name: "XYZ"}, employee: "Sam" }
employer = json_data["properties"]["employer_name"] # How Do I add [] based on how nested the value is dynamically?
employee = json_data["employee"]
非常感谢!
您可以尝试这样的操作:
def get_value(data, keys):
# Go over each key and adjust data value to current level
for key in keys:
data = data[key]
return data # Once last key is reached return value
如果你在 yaml 中是这样的话,你可以通过拆分 '-' 来获取你的密钥,所以在我的示例中,我只是将值保存到一个字符串中并以这种方式进行:
employer = "properties-employer_name"
keys = employer.split('-') # Gives us ['properties', 'employer_name']
现在我们可以调用上面定义的 get_value 函数:
get_value(json_data, keys)
哪个returns'XYZ'