动态读取嵌套 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'