首页 > 解决方案 > 字符串以 TextIOWrapper 的形式出现,而不是使用 ast.literal_eval() 函数的字符串

问题描述

我正在尝试使用ast.literal_eval().I 将字符串转换为字典。我使用网站的 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(),它说的是字符串。如果你能帮助我看到我的(可能是显而易见的)缺陷,那就太棒了。

标签: jsonpython-3.xapidictionary

解决方案


推荐阅读