考虑以下json对象:
> a = {u'service': u"Lulu's Bakery"}
好。现在让我们打印出来:
> s = str(a)
> print s
{u'service': u"Lulu's Bakery"}
问题是:如何巧妙地从该字符串加载json对象?
使用json.loads(s)
的简单方法显然不会在这里工作,因为s
不是有效的json字符串。
并且多次手动替换的方法似乎没有足够的吸引力,因为例如我更愿意避免在u's
和u'service'
上下文中区分Lulu's
部分。< / p>
任何简单的解决方案?
答案 0 :(得分:1)
使用eval
有些纯粹主义者讨厌使用eval
,并且不安全在不受信任的输入上运行(想象一下,如果某些恶人将os.system("rm -rf *")
放入带有字符串的文件中。这会删除你的文件)。但这是eval的正确用例。 eval
会将您返回的字符串转换为python对象。如果你想要那个python对象的JSON,你可以进一步使用json.dumps
In [1]: s = '''{u'service': u"Lulu's Bakery"}''' In [2]: s Out[2]: '{u\'service\': u"Lulu\'s Bakery"}' In [3]: x = eval(s) In [4]: x Out[4]: {u'service': u"Lulu's Bakery"} In [5]: import json In [6]: json.dumps(x) Out[6]: '{"service": "Lulu\'s Bakery"}'