2016-11-29 56 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-答案工作) –

相關問題