人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

關于 Python json中l(wèi)oad和loads區(qū)別

發(fā)布日期:2021-12-13 18:16 | 文章來源:源碼中國

一、相同點

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

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

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

二、區(qū)別

1.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'}')

2.dump 和 dumps(序列化)

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格式字符串,存入文件

三、JSON進階

1.序列化

# 使用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.反序列化

#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。這兩個模塊功能是一樣的,區(qū)別在于cPickle是C語言寫的,速度快,pickle是純Python寫的,速度慢。

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

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

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.從磁盤讀取到內存對象

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

到此這篇關于關于 Python json中l(wèi)oad和loads區(qū)別的文章就介紹到這了,更多相關 Python json中l(wèi)oad和loads區(qū)別內容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持本站!

版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網友推薦、互聯網收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯系alex-e#qq.com處理。

相關文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部