从无效的json字符串加载python dict
考虑以下json对象:从无效的json字符串加载python dict,python,json,Python,Json,考虑以下json对象: > a = {u'service': u"Lulu's Bakery"} 好。现在让我们打印它: > s = str(a) > print s {u'service': u"Lulu's Bakery"} 问题是:如何智能地从该字符串加载json对象 使用json.loads的简单方法显然在这里不起作用,因为s不是有效的json字符串。 而且多个手动替换的方法似乎不够吸引人,因为例如,我更愿意避免区分u'service'中的u的部分和luluu的上下
> a = {u'service': u"Lulu's Bakery"}
好。现在让我们打印它:
> s = str(a)
> print s
{u'service': u"Lulu's Bakery"}
问题是:如何智能地从该字符串加载json对象
使用json.loads
的简单方法显然在这里不起作用,因为s
不是有效的json字符串。
而且多个手动替换的方法似乎不够吸引人,因为例如,我更愿意避免区分u'service'
中的u的
部分和luluu的
上下文
任何简单的解决方案?使用eval
一些纯粹主义者讨厌使用eval
,在不受信任的输入上运行是不安全的(想象一下,如果某个作恶者将os.system(“rm-rf*”)
和字符串放在文件中.evaling将删除您的文件)。但这是一个正确的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"}'
在[1]中:s='{u'service':u“Lulu's Bakery”}''
在[2]中:s
Out[2]:“{u'service\”:u“Lulu's Bakery”}”
在[3]中:x=eval(s)
在[4]:x中
Out[4]:{u'service':u“露露的面包店”}
在[5]中:导入json
[6]中:json.dumps(x)
Out[6]:“{“服务”:“露露的面包店”}”
首先做
s=json.dumps(a)
,然后做json.loads(s)
是的,这会管用的,但是我已经有一堆坏字符串需要转换成json对象……你也能投票支持我的答案吗?因为它完全满足了问题的要求。@moinuddinkadri,如果我问如何转储和加载python dicts,我很乐意接受你的回答。然而,我问的是如何从无效的json字符串加载dict。这个任务有点不同,对吧?