Как итерировать список json с помощью dict в python

Я вызываю данные через API и хочу записать эти данные в мою модель Django. API предоставляет мне JSON со следующей структурой:

"results": [
        {
            "key1": "value",
            "key2": "value"
         },
         {
            "key1": "value",
            "key2": "value",
         },
         {
            "key1": "value",
            "key2": "value",
         },
         ....

Мой код выглядит следующим образом:

    def get_data():
        try:
            response = requests.get(settings.HOST+settings.PATH, verify=False)
            for data in response['results']:
                print(data)
                mydata = MyModel.add(**data)
            return results

Я получаю эту ошибку:

Connected to pydev debugger (build 212.5284.44)
{'key1': 'value', 'key2': 'value'}
list indices must be integers or slices, not str

Process finished with exit code 0


Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 846, in exec_module
  File "<frozen importlib._bootstrap_external>", line 983, in get_code
  File "<frozen importlib._bootstrap_external>", line 913, in source_to_code
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/Users/user01/Repository/api-test/myapi/myapp/management/commands/getapidata.py", line 27
    get_data()
IndentationError: unexpected unindent
python-BaseException

Что я делаю неправильно?

Снимок экрана переменных в PyCharm

enter image description here

Ваша проблема в том, что вы не получаете json из ответа.

как сказал @Jisson.

вам нужно позвонить .json()

    def get_data():
        try:
            response = requests.get(settings.HOST+settings.PATH, verify=False)
            json_response = response.json() # new
            for data in json_response['results']: # modified
                print(data)
                mydata = MyModel.add(**data)
            return results

Мой код по большей части работал. Проблему вызвал другой дикт в json. В модели при обработке JSON я не добавил еще один цикл и в этом была проблема. Я закомментировал эту часть и все работает нормально.

Спасибо всем за уделенное время!

Вернуться на верх