提问人:Trayzeck 提问时间:10/28/2022 更新时间:11/4/2022 访问量:66
访问 json 列表对象中的深度嵌套项
Accessing deeply nested items in json list object
问:
在 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”。
答:
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存储在某个文件中,然后像我所做的那样再试一次
评论