1. 程式人生 > >python json 序列化反序列化 和 中文編碼問題

python json 序列化反序列化 和 中文編碼問題

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); ,則其執行如果如下: