一次提取多个嵌套的 JSON 键



给定此脚本,如何一次提取多个 JSON 密钥 - 脚本循环浏览消息 ID 列表并提取 JSON 响应。我只想从响应中提取某些键。

import urllib3
import json
import csv
from progressbar import ProgressBar
import time
pbar = ProgressBar()
base_url = 'https://api.pipedrive.com/v1/mailbox/mailMessages/'
fields = {"include_body": "1", "api_token": "token"}
json_arr = []
http = urllib3.PoolManager()
with open('ten.csv', newline='') as csvfile:
    for x in pbar(csv.reader(csvfile, delimiter=' ', quotechar='|')):
            r = http.request('GET', base_url + "".join(x), fields=fields)
            mails = json.loads(r.data.decode('utf-8'))
            json_arr.append(mails['data']['from'][0]['id'])
print(json_arr)

这按预期工作。但我想做以下几点。

json_arr.append(mails(['data']['from'][0]['id'],['data']['to'][0]['id'])

这会导致类型错误:列表索引必须是整数或切片,而不是 str

你的意思是:

json_arr.append(mails['data']['from'][0]['id'])
json_arr.append(mails['data']['to'][0]['id'])

已经发布的答案看起来不错,但我会分享单行等价物,使用 extend() 而不是 append()

json_arr.extend([mails['data']['from'][0]['id'], mails['data']['to'][0]['id']])

最新更新