为什么解析json时应该首选json.loads而不是ast.literal_eval?

2024-04-28 03:42:20 发布

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

我有一本字典,它作为字符串存储在数据库字段中。我试图将其解析为dict,但是json.loads给了我一个错误。

为什么json.loads在这个问题上失败而ast.literal_eval起作用?一个比另一个好吗?

>>> c.iframe_data
u"{u'person': u'Annabelle!', u'csrfmiddlewaretoken': u'wTE9RZGvjCh9RCL00pLloxOYZItQ98JN'}"

# json fails
>>> json.loads(c.iframe_data)
Traceback (most recent call last):
ValueError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

# ast.literal_eval works
>>> ast.literal_eval(c.iframe_data)
{u'person': u'Annabelle!', u'csrfmiddlewaretoken': u'wTE9RZGvjCh9RCL00pLloxOYZItQ98JN'}

Tags: 字符串数据库jsondata字典evalastdict