动态读取嵌套的JSON

问题描述 投票:0回答:1

我目前正在尝试不确定是否可能的事情。

我正在尝试将API值从JSON字符串(具有嵌套值)映射到数据库字段,但我希望它是动态的。

在下面的YAML示例中,键将是数据库字段名称,而数据库字段值将是从JSON字符串(为嵌套值定界的“-”)获取信息的位置。我能够读取YAML配置,但我不了解如何将其转换为python代码。如果是动态的,我不知道我必须输入多少[]。

YAML:(PYYAML软件包)

employer: "properties-employer_name"
...
employee_name: "employee"

Python代码:(Python 3.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"]

非常感谢!

python python-3.x configuration yaml pyyaml
1个回答
0
投票

您可以尝试这样的事情:

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)

哪个返回'XYZ'

© www.soinside.com 2019 - 2024. All rights reserved.