小編給大家分享一下Python json中load和loads區別有哪些,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
dump 和 dumps 都實現了序列化
load 和 loads 都實現反序列化
變量從內存中變成可存儲或傳輸的過程稱之為序列化序列化是將對象狀態轉化為可保存或可傳輸格式的過程。
變量內容從序列化的對象重新讀到內存里稱之為反序列化反序列化是流轉換為對象。
load:針對文件句柄,將json格式的字符轉換為dict,從文件中讀取 (將string轉換為dict)
a_json = json.load(open('demo.json','r'))loads:針對內存對象,將string轉換為dict (將string轉換為dict)
a = json.loads('{'a':'1111','b':'2222'}')dump:將dict類型轉換為json字符串格式,寫入到文件 (易存儲)
a_dict = {'a':'1111','b':'2222'}
json.dump(a_dict, open('demo.json', 'w')dumps:將dict轉換為string (易傳輸)
a_dict = {'a':'1111','b':'2222'}
a_str = json.dumps(a_dict)總結:
根據序列化和反序列的特性
loads: 是將string轉換為dict
dumps: 是將dict轉換為string
load: 是將里json格式字符串轉化為dict,讀取文件
dump: 是將dict類型轉換為json格式字符串,存入文件
# 使用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__))#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提供兩個模塊來實現序列化:cPickle和pickle。這兩個模塊功能是一樣的,區別在于cPickle是C語言寫的,速度快,pickle是純Python寫的,速度慢。
變量從內存中變成可存儲或傳輸的過程稱之為序列化,在Python中叫pickling
變量內容從序列化的對象重新讀到內存里稱之為反序列化,即unpickling
try: import cPickle as pickle except ImportError: import pickle
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,注意是二進制存儲pickle.load(open('a.txt', 'rb')) #從file-like Object中直接反序列化出對象看完了這篇文章,相信你對“Python json中load和loads區別有哪些”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。