最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python Json序列化與反序列化的示例

 更新時間:2018年01月31日 09:26:23   作者:菜鳥有點(diǎn)菜  
這篇文章主要介紹了Python Json序列化與反序列化的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

不同的編程語言有不同的數(shù)據(jù)類型; 比如說:

Python的數(shù)據(jù)類型有(dict、list、string、int、float、long、bool、None)
Java的數(shù)據(jù)類型有(bool、char、byte、short、int、long、float、double)
C的數(shù)據(jù)類型有(bit、bool、char、int、short、long、unsigned、double、float)
Tcl的數(shù)據(jù)類型(int、bool、float、string)
Ruby的數(shù)據(jù)類型(Number、String、Ranges、Symbols、true、false、Array、Hash)
...

他們的共同特點(diǎn)是,都有字符串類型!

所以要實(shí)現(xiàn)不同的編程語言之間對象的傳遞,就必須把對象序列化為標(biāo)準(zhǔn)格式,比如XML,但更好的方法是序列化為JSON,因?yàn)镴SON表示出來就是一個字符串,可以被所有語言讀取,也可以方便地存儲到磁盤或者通過網(wǎng)絡(luò)傳輸。
JSON不僅是標(biāo)準(zhǔn)格式,并且比XML更快,而且可以直接在Web頁面中讀取,非常方便.

JSON類型     Python類型
{}                  dict
[]                  list
"string"            str
1234.56             int或float
true                True
false               False
null                None

在python中,序列化可以理解為:把python的對象編碼轉(zhuǎn)換為json格式的字符串,反序列化可以理解為:把json格式字符串解碼為python數(shù)據(jù)對象。在python的標(biāo)準(zhǔn)庫中,專門提供了json庫與pickle庫來處理這部分。

json的dumps方法和loads方法,可實(shí)現(xiàn)數(shù)據(jù)的序列化和反序列化。具體來說,dumps方法,可將json格式數(shù)據(jù)序列為Python的相關(guān)的數(shù)據(jù)類型;loads方法則是相反,把python數(shù)據(jù)類型轉(zhuǎn)換為json相應(yīng)的數(shù)據(jù)類型格式要求。在序列化時,中文漢字總是被轉(zhuǎn)換為unicode碼,在dumps函數(shù)中添加參數(shù)ensure_ascii=False即可解決。

下面是json的序列化與反序列化:

1、Json序列化如下:

import json
print (json.__all__)  #查看json庫的所有方法
['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONEncoder']

未在dumps函數(shù)中添加參數(shù)ensure_ascii=False,結(jié)果如下:

#coding: utf-8
import json
dict = {'name':'zhangsan', 'age':33, 'address':'紅星路'}
print('未序列化前的數(shù)據(jù)類型為:', type(dict))
print('為序列化前的數(shù)據(jù):', dict)
#對dict進(jìn)行序列化的處理
dict_xu = json.dumps(dict)  #直接進(jìn)行序列化
print('序列化后的數(shù)據(jù)類型為:', type(dict_xu))
print('序列化后的數(shù)據(jù)為:', dict_xu)

未序列化前的數(shù)據(jù)類型為: <class 'dict'>
為序列化前的數(shù)據(jù): {'name': 'zhangsan', 'address': '紅星路', 'age': 33}
序列化后的數(shù)據(jù)類型為: <class 'str'>
序列化后的數(shù)據(jù)為: {"name": "zhangsan", "address": "\u7ea2\u661f\u8def", "age": 33}

在dumps函數(shù)中添加參數(shù)ensure_ascii=False,結(jié)果如下:

#coding: utf-8
import json

dict = {'name':'zhangsan', 'age':33, 'address':'紅星路'}
print('未序列化前的數(shù)據(jù)類型為:', type(dict))
print('為序列化前的數(shù)據(jù):', dict)
#對dict進(jìn)行序列化的處理
dict_xu = json.dumps(dict,ensure_ascii=False)  #添加ensure_ascii=False進(jìn)行序列化
print('序列化后的數(shù)據(jù)類型為:', type(dict_xu))
print('序列化后的數(shù)據(jù)為:', dict_xu)

未序列化前的數(shù)據(jù)類型為: <class 'dict'>
為序列化前的數(shù)據(jù): {'address': '紅星路', 'age': 33, 'name': 'zhangsan'}
序列化后的數(shù)據(jù)類型為: <class 'str'>
序列化后的數(shù)據(jù)為: {"address": "紅星路", "age": 33, "name": "zhangsan"}

2、Json反序列化如下:

#coding: utf-8
import json
dict = {'name':'zhangsan', 'age':33, 'address':'紅星路'}
print('未序列化前的數(shù)據(jù)類型為:', type(dict))
print('為序列化前的數(shù)據(jù):', dict)
#對dict進(jìn)行序列化的處理
dict_xu = json.dumps(dict,ensure_ascii=False)  #添加ensure_ascii=False進(jìn)行序列化
print('序列化后的數(shù)據(jù)類型為:', type(dict_xu))
print('序列化后的數(shù)據(jù)為:', dict_xu)
#對dict_xu進(jìn)行反序列化處理
dict_fan = json.loads(dict_xu)
print('反序列化后的數(shù)據(jù)類型為:', type(dict_fan))
print('反序列化后的數(shù)據(jù)為: ', dict_fan)

未序列化前的數(shù)據(jù)類型為: <class 'dict'>
為序列化前的數(shù)據(jù): {'name': 'zhangsan', 'age': 33, 'address': '紅星路'}
序列化后的數(shù)據(jù)類型為: <class 'str'>
序列化后的數(shù)據(jù)為: {"name": "zhangsan", "age": 33, "address": "紅星路"}
反序列化后的數(shù)據(jù)類型為: <class 'dict'>
反序列化后的數(shù)據(jù)為:  {'name': 'zhangsan', 'age': 33, 'address': '紅星路'}

在實(shí)際的工作中,序列化或者反序列化的可能是一個文件的形式,不可能像如上寫的那樣簡單的,下來就來實(shí)現(xiàn)這部分,把文件內(nèi)容進(jìn)行序列化和反序列化,先來看序列化的代碼,兩步操作:1、先序列化 列表對象 ;2、步把序列化成的字符串寫入文件:

#coding: utf-8
import json

list = ['Apple','Huawei','selenium','java','python']
#把list先序列化,寫入到一個文件中
# 兩步操作 1步先序列化 列表對象 2步把序列化成的字符串寫入文件
json.dump(list, open('e:/test.txt','w'))  
r1=open('e:/test.txt','r')
print(r1.read())

["Apple", "Huawei", "selenium", "java", "python"]

反序列化,兩步操作:1、先讀取文件的字符串對象;2、然后反序列化成列表對象:

#coding: utf-8
import json

list = ['Apple','Huawei','selenium','java','python']
#把list先序列化,寫入到一個文件中
# 兩步操作 1步先序列化 列表對象 2步把序列化成的字符串寫入文件
json.dump(list, open('e:/test.txt','w'))  
r1=open('e:/test.txt','r')
print(r1.read())
#------------------------------------------------------------
#兩步操作:1、先讀取文件的字符串對象;2、然后反序列化成列表對象
res=json.load(open('e:/test.txt','r'))
print (res)
print('數(shù)據(jù)類型:',type(res))

["Apple", "Huawei", "selenium", "java", "python"]
['Apple', 'Huawei', 'selenium', 'java', 'python']
數(shù)據(jù)類型: <class 'list'>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python利用scikit-learn實(shí)現(xiàn)近鄰算法分類的示例詳解

    Python利用scikit-learn實(shí)現(xiàn)近鄰算法分類的示例詳解

    scikit-learn已經(jīng)封裝好很多數(shù)據(jù)挖掘的算法,這篇文章就來用scikit-learn實(shí)現(xiàn)近鄰算法分類,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-02-02
  • python實(shí)現(xiàn)抖音視頻批量下載

    python實(shí)現(xiàn)抖音視頻批量下載

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)抖音視頻批量下載,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python復(fù)合條件下的字典排序

    python復(fù)合條件下的字典排序

    這篇文章主要介紹了python復(fù)合條件下的字典排序,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python模擬Django框架實(shí)例

    python模擬Django框架實(shí)例

    這篇文章主要為大家詳細(xì)介紹了python模擬Django框架實(shí)例,了解一個web框架需要的基本功能,感興趣的小伙伴們可以參考一下
    2016-05-05
  • python3使用Pillow、tesseract-ocr與pytesseract模塊的圖片識別的方法

    python3使用Pillow、tesseract-ocr與pytesseract模塊的圖片識別的方法

    這篇文章主要介紹了python3使用Pillow、tesseract-ocr與pytesseract模塊的圖片識別的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 淺談selenium如何應(yīng)對網(wǎng)頁內(nèi)容需要鼠標(biāo)滾動加載的問題

    淺談selenium如何應(yīng)對網(wǎng)頁內(nèi)容需要鼠標(biāo)滾動加載的問題

    這篇文章主要介紹了淺談selenium如何應(yīng)對網(wǎng)頁內(nèi)容需要鼠標(biāo)滾動加載的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 基于Python對象引用、可變性和垃圾回收詳解

    基于Python對象引用、可變性和垃圾回收詳解

    下面小編就為大家?guī)硪黄赑ython對象引用、可變性和垃圾回收詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • python中的sys.stdout重定向解讀

    python中的sys.stdout重定向解讀

    這篇文章主要介紹了python中的sys.stdout重定向,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • python讀取.mat文件的數(shù)據(jù)及實(shí)例代碼

    python讀取.mat文件的數(shù)據(jù)及實(shí)例代碼

    這篇文章主要介紹了python讀取.mat文件的數(shù)據(jù)的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07
  • python圖片合成的示例

    python圖片合成的示例

    這篇文章主要介紹了python圖片合成的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11

最新評論

抚顺县| 巧家县| 噶尔县| 枣庄市| 阳山县| 乐东| 吴旗县| 余庆县| 南雄市| 亳州市| 安多县| 泰来县| 亚东县| 安达市| 潮安县| 华亭县| 唐海县| 萍乡市| 平远县| 吕梁市| 聊城市| 湖口县| 洞头县| 东至县| 平谷区| 肃宁县| 望奎县| 芷江| 甘谷县| 平原县| 仪征市| 安平县| 湟中县| 咸丰县| 清涧县| 平阴县| 喀什市| 讷河市| 遵义市| 澜沧| 莆田市|