python json 序列化反序列化 和 中文編碼問題
阿新 • • 發佈:2019-02-19
json的dumps方法和loads方法,可實現資料的序列化和反序列化。具體來說,dumps方法,可將json格式資料序列為python的相關的資料型別,通常用於列印等;loads方法則是相反,把python資料型別轉換為json相應的資料型別格式要求,反序列化後可以對json資料進行各種操作。在程式設計過程還發現一個問題,在序列化時,中文漢字總是被轉換為unicode碼,在網上搜索後發現,在dumps函式中新增引數ensure_ascii=False即可解決。實驗性程式如下:
import json; #原始json資料 jsonData=[{'name':'張某某','age':30,'sex':'男'},{'name':'李某','age':20,'sex':'女'}]; #序列化,然後輸出 jsonStr=json.dumps(jsonData,ensure_ascii=False); print("序列化結果:"); print(jsonStr); #再將jsonStr反序列化為json格式 jsonData=json.loads(jsonStr); print("反序列化整體結果:"); print(jsonData); print("利用迴圈遍歷反序列化結果:"); for each in jsonData: print(each['name'],each['age'],each['sex']);
結果:
另外,dumps方法還有一個引數indent,用來調整顯示格式,能夠更加直觀在看到結果。
比如,將上述程式碼第7行換為jsonStr=json.dumps(jsonData,ensure_ascii=False,indent=2); ,則其執行如果如下: