访问 json 列表对象中的深度嵌套项

Accessing deeply nested items in json list object

提问人:Trayzeck 提问时间:10/28/2022 更新时间:11/4/2022 访问量:66

问:

在 Python3 中,我正在执行 GET 请求以接收带有重复项的很长的 JSON 响应。 整个 Response 输出存储到全局变量中,如下所示:

def get_users():
    url = "https://blablabla/api/users"
    headers = {"Authorization": accessToken, "Content-Type": "application/json", "Accept": "application/json"}
    r = requests.get(url, headers=headers)
    r_dict = r.json()
    return r_dict

get_user_function = get_users()

响应:

[
    {
        "created": "2021-01-1 09:02:35.112 +0000 UTC",
        "id": "123456",
        "clientID": "client_client",
        "name": "name_name",
        "old": true,
        "config": {
            "config_option_1": false,
            "config_option_2": true,
            "config_option_3": false,
            "config_option_4": false,
            "config_option_5": false,
            "config_option_6": false,
            "config_option_7": false,
            "config_option_8": "123",
            "config_option_9": "456",
            "config_option_10": "",
            "config_option_11": {},
            "config_option_12": {
                "config_option_12.1": {
                    "config_option_12.1.1": true,
                    "config_option_12.1.2": true,
                    "config_option_12.1.3": false,
                    "config_option_12.1.4": true,
                    "config_option_12.1.5": false,
                    "config_option_12.1.6": false,
                    "config_option_12.1.7": false,
                    "config_option_12.1.8": false
                }}}}]

这大约是第一个响应项的一半,整个响应对象包含数千个这样的项。 现在我想创建一个字典,并用给定列表中的几个项目填充它。

关于如何访问更深层次的嵌套项,例如 item[“config”][“config_option_12”][“config_option_12.1”][“cofnig_option_12.1.1”],有什么想法或改进吗?

到目前为止,我有这个:

my_dict = {item["name"]: [item["id"], item["created"], item["config"]["config_option_12"]] for item in get_user_function}
print(my_dict)

在这里,我正在努力访问“config”的子项。“Config_option_1 - 11”工作正常,但“config_option_12”并进一步输出 KeyError:“config_option_12”。

python-3.x 字典 for-loop 嵌套列表

评论


答:

0赞 Saifeddin 10/28/2022 #1

假设你有一个 json 文件。 这对我有用

import json 
 
with open('abc.json', 'r') as f:
    mydict = {'value': item['config']['config_option_12']['config_option_12.1']['config_option_12.1.1'] for item in json.load(f)}

print(mydict)
# result {'value': True}

也许尝试将您的r_json存储在某个文件中,然后像我所做的那样再试一次