Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从无效的json字符串加载python dict_Python_Json - Fatal编程技术网

从无效的json字符串加载python dict

从无效的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的上下

考虑以下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的
上下文

任何简单的解决方案?

使用
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。这个任务有点不同,对吧?