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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲婷婷在线视频 | 免费在线观看a | 成人看片免费无限观看视频 | 国产suv精品| 日本视频一区在线观看免费 | 极品丝袜乱系列在线阅读 | 亚洲欧美成人综合在线 | 好大好爽好涨太深了小喜 | 国产欧美一区二区成人影院 | 欧美专区在线视频 | 日产中文乱码卡一卡二 | 日本高清在线看免费观看 | 97色资源 | 丁香五香天堂网 | 草久热| 99视频有精品视频免费观看 | 亚洲人成综合在线播放 | 免费观看韩剧网站在线观看 | 精品久久久久久国产 | 91嫩草私人成人亚洲影院 | 2012中文字幕中字视频 | 1024人成网站色 | 亚洲xxxxxhd奶水女人 | www.成人在线视频 | 99热这里只有精品在线观看 | 操女b | 久久久乱码精品亚洲日韩 | 欧美人做人爱a全程免费 | 色综合天天综合网看在线影院 | 欧美黑人换爱交换乱理伦片 | 五月天久久久 | 美女被狂揉下部羞羞动漫 | 国产区一二三四区2021 | 波多野结衣xxxxx在线播放 | 掰开逼操 | 91美女在线观看 | 四虎黄色影视库 | 国内精品91东航翘臀女神在线 | 免费特黄一区二区三区视频一 | 久久艹影院 | 天天做天天爰夜夜爽 |