我的JSON对象有什么问题?

2024-10-01 13:34:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经将一个JSON对象(由其他人生成,用我没有权限访问的代码)写入了一个名为kommscache.json的文件,现在我试图用Python再次读取它。在

我就是这样做的:

import json
from pprint import pprint

with open('kommscache.json') as data_file:
    data = json.load(data_file)

pprint(data)

在调用json.load()时,我收到以下错误消息:

^{pr2}$

JSON文件的前几行如下所示(我也尝试过非预打印版本,结果相同):

{u'filtered': 458,
 u'items': [{u'comment_count': 0,
             u'current_revision': {u'created_by': {u'avatar': 19435601,

不幸的是,我无法显示整个文件,因为它包含一些敏感数据(它超过6000行…),但是如果我正确地读取错误消息,错误已经在文件的开头。但是,我不明白为什么这个JSON语法不正确。我仔细检查过了,这个片段中所有的大括号和方括号都有匹配的右括号。在

为什么我不能加载这个JSON对象?在


Tags: 文件对象代码importjson消息权限data
2条回答

这不是一个JSON文件。它似乎是一个只需编写Python字典的字符串版本就可以创建的文件。虽然格式相似,但并不相同。在

您应该显示创建文件的代码。您需要使用json.dump(data),而不是简单地调用str()。在

您保存了python对象的文本表示,不是JSON。在

您可以用^{}来解码这些代码,但您可能希望修复JSON编写的代码。请确保在保存时在结构上使用json.dumps()。在

使用ast.literal_eval()(关闭所有大括号后):

>>> import ast
>>> ast.literal_eval('''\
... {u'filtered': 458,
...  u'items': [{u'comment_count': 0,
...              u'current_revision': {u'created_by': {u'avatar': 19435601,
... }}}]}''')
{u'filtered': 458, u'items': [{u'comment_count': 0, u'current_revision': {u'created_by': {u'avatar': 19435601}}}]}

相关问题 更多 >