2016-11-29 34 views
2

我不知道我在做什么错误。我有一本我想转换为JSON的字典。我的问题是与逃生\如何在没有转义斜线的情况下将字典放入JSON

如何把一本字典为JSON没有逃逸\

这里是我的代码:

def printJSON(dump): 
    print(json.dumps(dump, indent=4, sort_keys=True)) 

data = {'number':7, 'second_number':44} 
json_data = json.dumps(data) 
printJSON(json_data) 

输出是: “{\” second_number \ “:44 \” 号\ “:7}”

我所要的输出是这样的: “{” second_number “:44, ”数字“:7}”

+1

你为什么倾销两次数据?第一次转储将数据转换为字符串,第二次转储对字符串进行编码,您的意思是'printJSON(data)'? – AChampion

+1

通过转储字典创建一个字符串('json_data') - 然后您将该字符串再次转储到JSON中'printJSON' - 转义是正确的...为什么要转储它两次? – mgilson

+0

然后你需要将'printJSON'函数传递给一个'dict',而不是一个字符串,这就是你现在正在做的事情。 –

回答

7

原因是因为你将JSON数据转储了两次。一旦在功能之外,另一个在里面。供参考:

>>> import json  
>>> data = {'number':7, 'second_number':44} 

# JSON dumped once, without `\` 
>>> json.dumps(data) 
'{"second_number": 44, "number": 7}' 

# JSON dumped twice, with `\` 
>>> json.dumps(json.dumps(data)) 
'"{\\"second_number\\": 44, \\"number\\": 7}"' 

如果打印甩了两倍的数据,你会发现你正在得到什么,即:

>>> print json.dumps(json.dumps(data)) 
"{\"second_number\": 44, \"number\": 7}" 
+0

是的,这是问题。我想这就是什么期待什么时候围绕 –

+0

@ScottBinkley:如果这个答案对你有帮助,请将它标记为[接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-答案工作) –

相关问题