Я пытаюсь преобразовать строку в словарь, используя ast.literal_eval()
. Я использовал API веб-сайта для получения данных в формате Json. Когда я распечатывал данные на своей консоли и использовал функцию type()
, он возвращал их в виде строки (но форматировал как словарь). Я написал str в файл json. это выглядит так:
{"productId":1200,"productName":"Mox Sapphire","image":"https://6d4be195623157e28848-7697ece4918e0a73861de0eb37d08968.ssl.cf1.rackcdn.com/1200_200w.jpg","categoryId":1,"groupId":7,"url":"http://store.tcgplayer.com/magic/alpha-edition/mox-sapphire","modifiedOn":"2013-05-09T12:13:41.653","productConditions":[{"productConditionId":15346,"name":"Near Mint","language":"English","isFoil":false},{"productConditionId":317018,"name":"Damaged","language":"English","isFoil":false},{"productConditionId":332776,"name":"Moderately Played","language":"English","isFoil":false},{"productConditionId":348534,"name":"Heavily Played","language":"English","isFoil":false},{"productConditionId":364292,"name":"Lightly Played","language":"English","isFoil":false}]}
Когда я открываю файл и запускаю type()
, он выглядит как <class "str">
. Затем я пытаюсь преобразовать его в словарь, используя функцию ast.literal_eval()
в файле Json, который является строкой, но получаю следующую ошибку:
Traceback (most recent call last):
File "C:/Users/Jup/PycharmProjects/WebSc/tcg_player.py", line 62, in <module>
get_card_detail()
File "C:/Users/Jup/PycharmProjects/WebSc/tcg_player.py", line 59, in get_card_detail
x = json.loads(f)
File "C:\Program Files\Python36\lib\json\__init__.py", line 348, in loads
'not {!r}'.format(s.__class__.__name__))
TypeError: the JSON object must be str, bytes or bytearray, not 'TextIOWrapper'
Я уверен, что мне не хватает чего-то простого. Я не понимаю, как это тип TextIOWrapper
, а не строка, когда я использовал type()
, и он говорит строку. Если бы вы могли помочь мне увидеть мой (возможно, очевидный) недостаток, это было бы замечательно.