Как итерировать список 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
Ваша проблема в том, что вы не получаете 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 я не добавил еще один цикл и в этом была проблема. Я закомментировал эту часть и все работает нормально.
Спасибо всем за уделенное время!