使用python,即使字符串使用单引号,如何检查字符串是否是有效的json对象?

2024-05-08 06:31:22 发布

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

假设我有一个字符串,看起来像这样:

"{'apple': 1, 'orange': 2}"

如何确定这是否是一个有效的json对象?json.loads文件()不起作用,因为字符串使用单引号而不是双引号。用双引号替换所有单引号似乎有风险,因为单引号可能会被转义,如下所示:

"{'sentence':'let\'s solve the issue'}"

用双引号替换所有的单引号使句子变成:让我们解决问题,这是不正确的。你知道吗

我试过demjson,https://pypi.org/project/demjson/,它成功了,但是速度非常慢。有什么想法吗?你知道吗


Tags: 文件the对象字符串jsonapplesentence风险
2条回答

JSON specification要求对象具有字符串键,字符串被双引号引用。你知道吗

带有单引号字段的类似dict的对象不是JSON。你知道吗

你有的是其他格式。你知道吗

它可以是JSON5兼容的,它允许单引号字符串,并且有自己的JSON5 python library。你知道吗

它可能是一个糟糕的JSON实现,但应该在服务器上修复。JSON输出通常是用经过良好测试的库实现的,而仅仅是JSON的输出是一种糟糕的代码味道。这应该会让一个理智的人怀疑还有什么其他的草率代码。你知道吗

每个人都说过(你也发现了),如果json.loads文件抛出异常,则它不是JSON字符串。你知道吗

但是,这恰好是一个有效的python dict

>>> import json
>>> exec(' '.join(['da_dict =', "{'apple': 1, 'orange': 2}"]))
>>> json.dumps(da_dict)
'{"orange": 2, "apple": 1}'

相关问题 更多 >