2016-02-12 117 views
0

我正在嘗試編寫通過擴展對圖像進行排序並將它們分類爲.json文件的Python代碼。打印字符串時,語法與標準{'key1' : 'value1'}相符。然而,打開.json文件時,我注意到它增加了雙引號像"{'key1' : 'value1'}" 我不知道是什麼原因造成這種情況發生,這是我的代碼:.json添加雙引號逗號

for i in range(0,jpgCounter,1): 
    jpgBufferConfig = '\''+str(i)+'\'' + ' : ' +'\''+ str(jpgList[i]) +'\'' 
    jpgConfig = jpgConfig + jpgBufferConfig+ " , " 
jpgConfig = jpgConfig[:-3] 
jpgConfig = '{' + jpgConfig + '}' 

print jpgConfig 

with open ('config.json', 'w') as f: 
    json.dump(jpgConfig,f) 
+1

這些是*雙引號*,不是引號。 –

+0

您應該將字典傳遞給json.dump。它看起來像你已經做了一個JSON字符串。在這種情況下,json.dump只會通過用雙引號包裝它來確保該字符串是有效的json。 –

回答

0

你正在做這件事。您正在創建一個字符串,然後將該字符串編碼爲JSON; json.dump()接受Python對象,並將其轉換爲JSON對象。那個字符串包含單引號,逗號和大括號字符並不重要,它們是字符串值編碼的一部分。你基本上是對數據進行雙重編碼。

創建Python字典,編碼到JSON:

jpgConfig = {str(i): str(item) for i, item in enumerate(jpgList)} 
print jpgConfig # prints the Python object produced as Python syntax. 

with open ('config.json', 'w') as f: 
    json.dump(jpgConfig, f) 
從編碼雙

除此之外,你實際上是無效的生產JSON(使用而不是雙單引號)。你會注意到產生的JSON將如下所示:

{"key1": "value1"}