一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 關于 Python json中load和loads區別

關于 Python json中load和loads區別

2022-02-25 00:25小小程序員ol Python

這篇文章主要介紹了關于 Python json中load和loads區別,文章也有簡單的說明它們之間的相同點,然后詳細介紹不同點,需要的朋友可以參考一下文章的具體內容

一、相同點

  • dump dumps 都實現了序列化
  • load loads 都實現反序列化

變量從內存中變成可存儲或傳輸的過程稱之為序列化序列化是將對象狀態轉化為可保存或可傳輸格式的過程。

變量內容從序列化的對象重新讀到內存里稱之為反序列化反序列化是流轉換為對象。

二、區別

1.load 和 loads (反序列化)

load:針對文件句柄,將json格式的字符轉換為dict,從文件中讀取 (將string轉換為dict)

?
1
a_json = json.load(open('demo.json','r'))

loads:針對內存對象,將string轉換為dict (將string轉換為dict)

?
1
a = json.loads('{'a':'1111','b':'2222'}')

2.dump 和 dumps(序列化)

dump:將dict類型轉換為json字符串格式,寫入到文件 (易存儲)

?
1
2
a_dict = {'a':'1111','b':'2222'}
json.dump(a_dict, open('demo.json', 'w')

dumps:將dict轉換為string (易傳輸)

?
1
2
a_dict = {'a':'1111','b':'2222'}
a_str = json.dumps(a_dict)

總結:

根據序列化和反序列的特性

  • loads: 是將string轉換為dict
  • dumps: 是將dict轉換為string
  • load: 是將里json格式字符串轉化為dict,讀取文件
  • dump: 是將dict類型轉換為json格式字符串,存入文件

三、JSON進階

1.序列化

?
1
2
3
4
5
6
7
8
9
# 使用class對象的__dict__方法
class Student(object):
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score
import json
s = Student('Bob', 20, 88)
print(json.dumps(s, default=lambda obj: obj.__dict__))

2.反序列化

?
1
2
3
4
5
6
7
#Python學習交流群:531509025
 
def dict2student(d):
    return Student(d['name'], d['age'], d['score'])
 
json_str = '{"age": 20, "score": 88, "name": "Bob"}'
print(json.loads(json_str, object_hook=dict2student))

四、python中的序列化和反序列化

Python提供兩個模塊來實現序列化:cPicklepickle。這兩個模塊功能是一樣的,區別在于cPickle是C語言寫的,速度快,pickle是純Python寫的,速度慢。

  • 變量從內存中變成可存儲或傳輸的過程稱之為序列化,在Python中叫pickling
  • 變量內容從序列化的對象重新讀到內存里稱之為反序列化,即unpickling
?
1
2
3
4
try:
    import cPickle as pickle
except ImportError:
    import pickle

1.將內存對象存取到磁盤

?
1
2
3
4
5
a = dict(a=1, b=2, c=3)
pickle.dumps(a)     # 將對象序列化為str然后存入文件
 
a = dict(a=1, b=2, c=3)
pickle.dump(a, open('a.txt', 'wb')) # 使用dump直接把對象序列化為file-like Object,注意是二進制存儲

2.從磁盤讀取到內存對象

?
1
pickle.load(open('a.txt', 'rb'))    #從file-like Object中直接反序列化出對象

到此這篇關于關于 Python json中load和loads區別的文章就介紹到這了,更多相關 Python json中load和loads區別內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/python960410445/p/14978742.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 催眠白丝舞蹈老师小说 | 国产免费视频 | 国产伦精品一区二区三区免 | 欧美不卡一区二区三区免 | 小莹的性荡生活45章 | 青草国产福利视频免费观看 | 成人免费视频一区 | 韩国最新理论三级在线观看 | fc2免费人成在线 | 蜜桃影像传媒破解版 | a v在线男人的天堂观看免费 | 欧美肥bb| 国产老太婆hd老头 | 欧美一二| 日本激情小说 | 成人毛片1024你懂的 | 动漫xnxx | 国产99区 | 五月天精品视频在线观看 | 日本老妇乱子伦中文视频 | 黄色大片网站 | 亚洲成年人专区 | 高清不卡一区二区 | 人生路不在线观看完整版 | 国产福利资源网在线观看 | 国产精品自产拍在线观看2019 | 国产成人91高清精品免费 | 亚洲成年网站在线777 | 日本午夜大片免费观看视频 | 亚洲精品6久久久久中文字幕 | 潘金莲西门庆一级淫片aaaaaa | 全彩调教侵犯h本子全彩妖气he | 男人插曲女人身体 | 被老外玩爽的中国美女视频 | 成年人福利 | 亚洲精品一区二区观看 | ts人妖系列在线专区 | 好紧好爽的午夜寂寞视频 | 草莓香蕉绿巨人丝瓜榴莲污在线观看 | 羞羞私人影院可以直接免费观影吗 | 日本h乱淫动漫在线观看 |