Преобразование списка с помощью дампов json возвращает строку вместо словаря данных

#python #json

Вопрос:

Я пытаюсь получить данные json из URL-адреса запроса с помощью запросов. Результат, который я получаю, — это строка, поэтому сначала я использую загрузки json для преобразования ее в список, а затем я использую дампы json для преобразования ее в словарь данных. Но вместо этого я снова получаю строку. Я хотел бы получить его в качестве словаря данных.

Это код, который я использую:

 from json import loads
import json


url = 'https://www.sberbank.hr/umbraco/api/ExchangeRates/GetRates?dateString=1633159401811'

data = requests.get(url).json()


jsondata = loads(data)

print(type(jsondata))

data_dict = json.dumps(jsondata)

print(type(data_dict))

 

Комментарии:

1. Здесь есть недоразумение. jsondata = loads(data) создает jsondata структуру данных Python. Вы работаете с этим напрямую. Это: data_dict = json.dumps(jsondata) превращает структуру данных Python обратно в строку , которую вы можете записать в файл . Таким образом, это отменяет эффект jsondata = loads(data) . Эта строка будет действительным JSON, и это то, что вам нужно, чтобы отправить измененные данные в другую программу.

2. Результатом является список словарей, которые вы можете использовать в цикле for для доступа к элементам.

Ответ №1:

Это работает точно так, как описано в документе: https://docs.python.org/3/library/json.html#json.dumps

Я думаю, что ваши данные jsondata уже представляют собой массив объектов, что вы пытаетесь здесь заархивировать?

Ответ №2:

При использовании json.loads он преобразует строку json в dict тип и json.dumps преобразует dict в строку json. Просто используйте json.loads , если вам нужен диктант.

Я проверил данные, которые вы используете. Структура является:

 List[Dict]
 

Так что вы можете оценить его так data[0] или по любому индексу.