Python存儲或讀取json時如何引入額外的雙引號和轉(zhuǎn)義引號
Python存儲或讀取json時引入額外的雙引號和轉(zhuǎn)義引號
最近在解析json時發(fā)現(xiàn)value部分引入了不少額外的雙引號和轉(zhuǎn)義引號,
具體如下:
"test_str":"{\"created_time\": \"Fri_Aug_08 11:04:40 +0000 2014\"}"
下面解釋下如何在存儲和讀取json文件時避免這種情況。
如何在存儲時避免
存儲這里如果能規(guī)避掉,就可以讓解析的同學(xué)解析更加方便。
因?yàn)槭谴鎯r寫入了雙重編碼JSON字符串,所以才會出現(xiàn)這種情況。
所以寫入文件時檢查一下是否進(jìn)行了多次編碼。
>>> import json >>> not_encoded = {"created_at":"Fri Aug 08 11:04:40 +0000 2014"} >>> encoded_data = json.dumps(not_encoded) >>> print encoded_data {"created_at": "Fri Aug 08 11:04:40 +0000 2014"} >>> double_encode = json.dumps(encoded_data) >>> print(double_encode) "{\"created_at\": \"Fri Aug 08 11:04:40 +0000 2014\"}"
如何在解析時避免
調(diào)用第三方庫demjson,記得先安裝庫python -m pip install demjson。
>>> import demjson >>> test = r'"{\"created_time\": \"Fri_Aug_08 11:04:40 +0000 2014\"}"' >>> json_str = demjson.decode(test) >>> json_str '{"created_time": "Fri_Aug_08 11:04:40 +0000 2014"}' >>> json_content = json.loads(json_str) >>> json_content["created_time"] 'Fri_Aug_08 11:04:40 +0000 2014'
python json單、雙引號問題
在 python3 里,一個json是一個字典,形如 {"a":15}
json轉(zhuǎn)換成字符串的話
那么,如果你要將它轉(zhuǎn)換成字符串,也許你用的是str({"a":15}),這樣轉(zhuǎn)出來的,可能是是s= "{'a':'15'}",也就是說,里面的kv是單引號的。
這個字符串,傳到其他地方,再用json.loads(s)的時候會出錯,json不支持單引號。
所以,假如你想把一個json結(jié)構(gòu),轉(zhuǎn)成字符串,傳遞給遠(yuǎn)處,然后再重新解析成json結(jié)構(gòu),應(yīng)該這樣:
s = json.dumps({"a":15})
然后,把數(shù)據(jù)傳到遠(yuǎn)端,然后再解析回來:
d = json.loads(s)
這樣就不會出錯了。
也支持列表,能一次性傳多個結(jié)構(gòu)
s = json.dumps([{"a":15}, {"b":20}])
然后,把數(shù)據(jù)傳到遠(yuǎn)端,然后再解析回來:
d = json.loads(s)
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)logistic分類算法代碼
今天小編就為大家分享一篇python實(shí)現(xiàn)logistic分類算法代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02詳解Python+OpenCV進(jìn)行基礎(chǔ)的圖像操作
OpenCV是一個用于計(jì)算機(jī)視覺和圖像操作的免費(fèi)開源庫,有數(shù)千種優(yōu)化的算法和函數(shù)用于各種圖像操作。本文將使用OpenCV在Python中進(jìn)行一些圖像操作,感興趣的可以學(xué)習(xí)一下2022-02-02GDAL 矢量屬性數(shù)據(jù)修改方式(python)
這篇文章主要介紹了GDAL 矢量屬性數(shù)據(jù)修改方式(python),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03python實(shí)現(xiàn)的登錄和操作開心網(wǎng)腳本分享
這篇文章主要介紹了python實(shí)現(xiàn)的登錄和操作開心網(wǎng)腳本分享,可以登錄開心網(wǎng),登錄后發(fā)送信息等功能,需要的朋友可以參考下2014-07-07