首頁 > 後端開發 > Python教學 > python中json序列化的詳細分析

python中json序列化的詳細分析

不言
發布: 2018-09-30 14:02:46
轉載
2801 人瀏覽過

這篇文章帶給大家的內容是關於python中json序列化的詳細分析,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

之所以寫這個因為自己總是搞混了,容易弄錯,記下來有事沒事看看

序列化是指把變數從記憶體中變成可儲存或傳輸的過程稱為序列化用(使用dump或dumps),把變數內容從序列化的物件重新讀到

內存裡稱之為反序列化(使用load或loads)

如果我們要在不同的程式語言之間傳遞對象,就必須把物件序列化為標準格式,例如XML ,但更好的方法是序列化為JSON,因為JSON

表示出來就是一個字串,可以被所有語言讀取,也可以方便地儲存到磁碟或透過網路傳輸。 JSON不僅是標準格式,而且比XML更快,

而且可以直接在Web頁面中讀取,非常方便

JSON和Python內建的資料類型對應如下:

dumps()方法回傳一個str,內容就是標準的JSON。類似的,dump()方法可以直接把JSON寫入一個file_Object。要把JSON反序列化為

Python對象,用loads()或是對應的load()方法,前者把JSON的字串反序列化,後者從file_Object中讀取字串並反序列化

實例

dumps序列化一個物件

data= { "广州市": { "番禺区": ["南村镇", "大石镇", "榄核镇"], "天河区": ["广州塔", "中信广场", "天河又一城"] } }
s = json.dumps(data, sort_keys=True, indent=4, ensure_ascii=False) 
print(s)
登入後複製

#dumps:序列化一個物件  sort_keys:依照key排序  indent:以4個空格縮排,輸出閱讀友善型 ensure_ascii: 可以序列化非ascii碼(中文等)

##dump:將一個物件序列化存入檔案

##### #################### dump()的第一個參數是要序列化的對象,第二個參數是開啟的檔案句柄注意開啟檔案時加上以UTF-8編碼開啟############################################ ###################

with open("data.json", "w", encoding="UTF-8") as f: 
    s = json.dump(data, f, ensure_ascii=False)
登入後複製

运行此文件之后在统计目录下会有一个data.json文件

反序列化

load:从一个打开的文件句柄加载数据,注意打开的文件编码

with open("data.json", "r", encoding="UTF-8") as f:
    r = json.load(f)
    print(r)
登入後複製

loads: 从一个对象加载数据

a = json.loads(data) 
print(a)
登入後複製

不加ensure_ascii=False 结果是

加入ensure_ascii=False

a = json.loads(data,ensure_ascii=False)  要注意
print(a)
登入後複製

a=json.loads(input("请输入添加的数据:"),enconding='utf-8')
print(a)
登入後複製

以上是python中json序列化的詳細分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:cnblogs.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板