關(guān)于 Python json中l(wèi)oad和loads區(qū)別
一、相同點(diǎn)
dump和dumps都實(shí)現(xiàn)了序列化load和loads都實(shí)現(xiàn)反序列化
變量從內(nèi)存中變成可存儲(chǔ)或傳輸?shù)倪^程稱之為序列化序列化是將對(duì)象狀態(tài)轉(zhuǎn)化為可保存或可傳輸格式的過程。
變量內(nèi)容從序列化的對(duì)象重新讀到內(nèi)存里稱之為反序列化反序列化是流轉(zhuǎn)換為對(duì)象。
二、區(qū)別
1.load 和 loads (反序列化)
load:針對(duì)文件句柄,將json格式的字符轉(zhuǎn)換為dict,從文件中讀取 (將string轉(zhuǎn)換為dict)
a_json = json.load(open('demo.json','r'))
loads:針對(duì)內(nèi)存對(duì)象,將string轉(zhuǎn)換為dict (將string轉(zhuǎn)換為dict)
a = json.loads('{'a':'1111','b':'2222'}')
2.dump 和 dumps(序列化)
dump:將dict類型轉(zhuǎn)換為json字符串格式,寫入到文件 (易存儲(chǔ))
a_dict = {'a':'1111','b':'2222'}
json.dump(a_dict, open('demo.json', 'w')
dumps:將dict轉(zhuǎn)換為string (易傳輸)
a_dict = {'a':'1111','b':'2222'}
a_str = json.dumps(a_dict)
總結(jié):
根據(jù)序列化和反序列的特性
- loads: 是將
string轉(zhuǎn)換為dict - dumps: 是將
dict轉(zhuǎn)換為string - load: 是將里
json格式字符串轉(zhuǎn)化為dict,讀取文件 - dump: 是將
dict類型轉(zhuǎn)換為json格式字符串,存入文件
三、JSON進(jìn)階
1.序列化
# 使用class對(duì)象的__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.反序列化
#Python學(xué)習(xí)交流群: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提供兩個(gè)模塊來實(shí)現(xiàn)序列化:cPickle和pickle。這兩個(gè)模塊功能是一樣的,區(qū)別在于cPickle是C語言寫的,速度快,pickle是純Python寫的,速度慢。
- 變量從內(nèi)存中變成可存儲(chǔ)或傳輸?shù)倪^程稱之為序列化,在
Python中叫pickling - 變量內(nèi)容從序列化的對(duì)象重新讀到內(nèi)存里稱之為反序列化,即
unpickling
try:
import cPickle as pickle
except ImportError:
import pickle
1.將內(nèi)存對(duì)象存取到磁盤
a = dict(a=1, b=2, c=3)
pickle.dumps(a) # 將對(duì)象序列化為str然后存入文件
a = dict(a=1, b=2, c=3)
pickle.dump(a, open('a.txt', 'wb')) # 使用dump直接把對(duì)象序列化為file-like Object,注意是二進(jìn)制存儲(chǔ)
2.從磁盤讀取到內(nèi)存對(duì)象
pickle.load(open('a.txt', 'rb')) #從file-like Object中直接反序列化出對(duì)象
到此這篇關(guān)于關(guān)于 Python json中l(wèi)oad和loads區(qū)別的文章就介紹到這了,更多相關(guān) Python json中l(wèi)oad和loads區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)名片管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)名片管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
全面了解Nginx, WSGI, Flask之間的關(guān)系
下面小編就為大家分享一篇全面了解Nginx, WSGI, Flask之間的關(guān)系,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01
OpenCV實(shí)現(xiàn)圖片編解碼實(shí)踐
在很多應(yīng)用中,經(jīng)常會(huì)直接把圖片的二進(jìn)制數(shù)據(jù)進(jìn)行交換,這就需要對(duì)普通進(jìn)行編碼解碼,那么怎么才能實(shí)現(xiàn),本文就來介紹一下2021-06-06
解決Jupyter notebook中.py與.ipynb文件的import問題
這篇文章主要介紹了解決Jupyter notebook中.py與.ipynb文件的import問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04

