精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

網絡工程師學Python之JSON數據交換格式解析

網絡技術干貨圈 ? 來源:網絡技術干貨圈 ? 2023-04-21 16:53 ? 次閱讀

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。它基于JavaScript語法,但也可以被其他語言如Python解析和生成。Python內置了對JSON的支持,可以輕松地將Python對象序列化為JSON格式的字符串,以及將JSON字符串反序列化為Python對象。

JSON和Python對象的對應關系

JSON中的數據類型和Python對象的對應關系如下:

JSON Python
object dict
array list
string str
number (int/float) int/float
true True
false False
null None

Python中可以使用json模塊來進行JSON數據的處理。

將Python對象轉換為JSON

使用json模塊的dumps()函數可以將Python對象轉換為JSON格式的字符串。例如,將一個Python字典轉換為JSON格式的字符串:

importjson

data={'name':'Alice','age':20,'is_student':True}
json_str=json.dumps(data)
print(json_str)

輸出結果為:

{"name":"Alice","age":20,"is_student":true}

可以看到,dumps()函數將Python字典轉換為了JSON格式的字符串。注意,JSON格式的字符串中,字符串需要用雙引號括起來,而不是單引號。

將JSON轉換為Python對象

使用json模塊的loads()函數可以將JSON格式的字符串轉換為Python對象。例如,將上面生成的JSON格式的字符串轉換為Python字典:

json_str='{"name":"Alice","age":20,"is_student":true}'
data=json.loads(json_str)
print(data)

輸出結果為:

{'name':'Alice','age':20,'is_student':True}

可以看到,loads()函數將JSON格式的字符串轉換為了Python字典。

處理JSON文件

可以使用json模塊的dump()函數和load()函數來處理JSON文件。dump()函數可以將Python對象序列化為JSON格式的字符串,并將其寫入文件中。load()函數可以從文件中讀取JSON格式的字符串,并將其反序列化為Python對象。

例如,將Python字典寫入JSON文件:

data={'name':'Alice','age':20,'is_student':True}
withopen('data.json','w')asf:
json.dump(data,f)

從JSON文件中讀取Python對象:

withopen('data.json','r')asf:
data=json.load(f)
print(data)

輸出結果為:

{'name':'Alice','age':20,'is_student':True}

JSON格式的高級處理

在處理JSON格式數據時,還可以使用json模塊的一些高級功能。例如,json.JSONEncoder和json.JSONDecoder類可以自定義JSON格式的編碼和解碼方式。此外,還可以使用json.JSONEncoder的default()方法和json.JSONDecoder的objecthook()方法來自定義某些數據類型的JSON編碼和解碼方式。

下面是一個示例,展示如何使用json.JSONEncoder和json.JSONDecoder自定義JSON格式的編碼和解碼方式。假設有一個Person類,其對象包含姓名和年齡兩個屬性:

classPerson:
def__init__(self,name,age):
self.name=name
self.age=age

現在想要將Person對象序列化為JSON格式的字符串,并將JSON字符串反序列化為Person對象。首先,需要定義一個自定義的JSON編碼器

classPersonEncoder(json.JSONEncoder):
defdefault(self,obj):
ifisinstance(obj,Person):
return{'name':obj.name,'age':obj.age}
returnsuper().default(obj)

PersonEncoder類繼承自json.JSONEncoder類,并覆蓋了default()方法。default()方法接收一個參數obj,表示要序列化的Python對象。如果obj是Person對象,則將其轉換為一個包含姓名和年齡屬性的字典;否則,調用父類的default()方法進行默認處理。

然后,可以使用自定義的編碼器將Person對象序列化為JSON格式的字符串:

person=Person('Alice',20)
json_str=json.dumps(person,cls=PersonEncoder)
print(json_str)

輸出結果為:

{"name":"Alice","age":20}

可以看到,Person對象被成功地序列化為了JSON格式的字符串。

接下來,需要定義一個自定義的JSON解碼器:

classPersonDecoder(json.JSONDecoder):
defobject_hook(self,dct):
if'name'indctand'age'indct:
returnPerson(dct['name'],dct['age'])
returndct

PersonDecoder類繼承自json.JSONDecoder類,并覆蓋了object_hook()方法。object_hook()方法接收一個參數dct,表示要反序列化的JSON數據。如果dct是包含name和age屬性的字典,則將其轉換為一個Person對象;否則,返回原始的字典數據。

最后,可以使用自定義的解碼器將JSON格式的字符串反序列化為Person對象:

json_str='{"name":"Alice","age":20}'
person=json.loads(json_str,cls=PersonDecoder)
print(person.name,person.age)

輸出結果為:

Alice20

可以看到,JSON格式的字符串被成功地反序列化為了Person對象。

結論

在Python中,使用json模塊可以輕松地處理JSON格式的數據。可以將Python對象序列化為JSON格式的字符串,將JSON格式的字符串反序列化為Python對象,以及處理JSON文件。此外,還可以使用json.JSONEncoder和json.JSONDecoder類來自定義JSON格式的編碼和解碼方式。掌握了這些知識,可以更加靈活地處理JSON格式的數據.






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 字符串
    +關注

    關注

    1

    文章

    577

    瀏覽量

    20488
  • python
    +關注

    關注

    56

    文章

    4783

    瀏覽量

    84473
  • JSON
    +關注

    關注

    0

    文章

    117

    瀏覽量

    6940

原文標題:網絡工程師學Python-19-JSON

文章出處:【微信號:網絡技術干貨圈,微信公眾號:網絡技術干貨圈】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    華為網絡工程師培訓教材

    華為網絡工程師培訓教材
    發表于 08-16 17:27

    華為“網絡工程師”培訓專用教程

    華為“網絡工程師”培訓專用教程
    發表于 08-18 15:12

    如何解決自定義和使用XML數據交換格式帶來的缺陷?

    JSON數據交換格式相比XML和傳統數據交換格式所具有哪些優勢?如何解決自定義和使用XML數據交換格式帶來的缺陷?
    發表于 05-27 06:20

    JSON是什么?如何去創建一種JSON

    1.JSON是一種輕量級的數據交換格式。是一種獨立于語言的文本格式。輕量級適合xml相比較。數據交換指的是客戶端和服務器之間的數據傳遞
    發表于 07-09 07:06

    AIoT智能物聯網工程師學習路線規劃以及詳細解析

    大家好,我是老白。今天給大家帶來AIoT智能物聯網工程師學習路線規劃以及詳細解析。AIoT智能物聯網工程師學習路線詳解AIoT學習路線規劃學習階段階段名稱主題 階段一Python基礎與
    發表于 08-23 06:06

    網絡工程師培訓教程(華為HCNE)

    網絡工程師培訓教程(HCNE):華為HCNE-網絡工程師培訓教程(PDF) 01.第一章網絡基礎知識.pdf02.第二章常見網絡接口與電纜.pdf03.第三章以太網
    發表于 06-09 19:20 ?129次下載

    網絡工程師RCNA教學內容

    網絡工程師RCNA教學內容 內容 OSI網絡模型和TCP/IP協議棧子網劃分 交換機的原理和基本配置          
    發表于 03-26 17:33 ?41次下載

    基于J2ME/J2EE的JSON數據交換的探討

    分析JSON數據交換格式,并提出在客戶端(J2ME)與服務器端(J2EE)之間采用JSON數據交換格式的框架。對于輕量級應用,該框架可節省客戶端的計算資源,提高
    發表于 12-30 16:10 ?0次下載

    合格的網絡工程師必會實驗大全

    合格的網絡工程師必會實驗大全.pdf合格的網絡工程師必會實驗大全.pdf
    發表于 10-30 17:46 ?0次下載

    2004-2012網絡工程師試題

    2004-2012網絡工程師試題是工程師學習通關的必備書籍
    發表于 06-17 16:33 ?0次下載

    android使用JSON進行網絡數據交換

    本文將快速講解 JSON 格式,并通過代碼示例演示如何分別在客戶端和服務器端進行 JSON 格式數據的處理。 什么是
    發表于 12-04 11:51 ?0次下載

    一文解析網絡工程師到底是干什么的

    都說網絡工程師吃香,可是到底網絡工程師是干什么的?還真的沒有幾個人能夠說得出來。今天我們就來了解一下網絡工程師。在了解和網絡工程師的工作之前,我們先了解,
    發表于 01-03 15:32 ?1.8w次閱讀

    什么是網絡工程師

    什么是網絡工程師網絡工程師就是通過學習和訓練,掌握了網絡技術的理論知識和操作技能的網絡技術人員。網絡工程師能夠從事計算機信息系統的設計、建
    的頭像 發表于 02-19 14:28 ?7622次閱讀

    什么是JSON JSON的語法規則

    )的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成為理想的數據交換語言。易于人閱讀和編寫,同時也易于機器
    的頭像 發表于 08-25 15:40 ?2625次閱讀

    網絡工程師學Python-for循環

    Python 中,for 循環是一種常用的結構,用于遍歷序列(如列表、元組、字符串)中的元素。
    的頭像 發表于 04-19 15:47 ?918次閱讀