如何从 JSON 响应中获取所有 "id" 值?

How to get all "id" values from JSON response?

我试过这种简单的值解析,但没有用。我能够获得所有响应,如果只有一个值,我可以轻松获得值,但我无法理解为什么会出现此错误。

TypeError: list indices must be integers or slices, not str

我想从这个 JSON 响应中获取所有“id”。

这是我的代码:

def get_api_all(api):
    r = requests.get(f'{base_url}/{api}/')
    return r.status_code, r.json()

 def test_get_person(self):
        status_code, data =get_api_all('persons')
        ids = []
        for i in data['id']:
         print(i['id'])

这是我的 json 格式的示例回复:

[
   {
      "id":"b9f2d28c-57dc-4381-a752-ac36611ab51a",
      "first_name":"Arnold",
      "last_name":"Schwarzenegger",
      "birth_year":1947
   },
   {
      "id":"b636e887-7402-4eda-885f-549ea9792116",
      "first_name":"Charlize",
      "last_name":"Theron",
      "birth_year":1975
   },
   {
      "id":"c22c7475-bd4b-4dfd-ab3b-eb27ef4cb59f",
      "first_name":"Brad",
      "last_name":"Pitt",
      "birth_year":1963
   },
   {
      "id":"33c22f9d-cfc4-4733-986a-61e1a73cee8e",
      "first_name":"Patrick",
      "last_name":"Stewart",
      "birth_year":1940
   },
   {
      "id":"a0c54b47-35b1-4894-bccf-7bac9ade8f41",
      "first_name":"dumm",
      "last_name":"Stewart",
      "birth_year":1940
   },
   {
      "id":"a43fca0c-2a49-49be-902f-ec48ac4b57cb",
      "first_name":"Patrick",
      "last_name":"Stewart",
      "birth_year":1940
   } ]

你这里有误:

for i in data['id']:
    print(i['id'])

应该是:

for i in data:
    print(i['id'])

因为数据是字典列表,而不是字典。列表没有键,因此 data['id'] 引发错误。