Python中的json內(nèi)置庫(kù)詳解
一、json作用
json 是用于存儲(chǔ)和交換數(shù)據(jù)的語(yǔ)法,是一種輕量級(jí)的數(shù)據(jù)交換式使用場(chǎng)景,主要用于以下場(chǎng)景
- 接口數(shù)據(jù)的傳輸
- 序列化
- 配置文件(不是很適合,因?yàn)椴荒軐懽⑨專a可讀性較差一點(diǎn))
二、json組成的結(jié)構(gòu)
- 鍵值對(duì)形式
- 數(shù)組形式
- python 對(duì)象 與 json 數(shù)據(jù)類型對(duì)應(yīng),如下圖
三、json庫(kù)
- 可以從字符串或文件中解析json
- 該庫(kù)解析json后將其轉(zhuǎn)為python字典或者列表
- 常用的方法有以下,如下圖
- 將 python 對(duì)象轉(zhuǎn)化為 json 字符串的demo,使用 dumps 方法
import json """ 將 python 對(duì)象轉(zhuǎn)為 json 字符串 """ # 定義 python 字典格式的對(duì)象,在python中一切皆為對(duì)象 data ={ 'a':1, 'b':['1', 2], 'c':True, 'd':False, 'e':None } # 將 python 對(duì)象轉(zhuǎn)為 json 字符串 python_data = json.dumps(data) # 打印變量 python_data print(python_data)
輸出的結(jié)果如下,雙引號(hào)、true、false 、null 這些都是 json 的數(shù)據(jù)格式
{"a": 1, "b": ["1", 2], "c": true, "d": false, "e": null}
- 將 json 字符串轉(zhuǎn)化為 python 對(duì)象,使用的是 loads 方法,代碼如下
""" 將 json字符串的格式轉(zhuǎn)化成 python 對(duì)象 """ # 定義一個(gè) json 字符串 json_data = '{"a": 1, "b": ["1", 2], "c": true, "d": false, "e": null}' # 將 json 字符串轉(zhuǎn)化為 python 對(duì)象 python_data = json.loads(json_data) # 打印變量 python_data print(python_data) # 打印變量的數(shù)據(jù)類型 print(type(python_data))
輸出的結(jié)果如下,輸出為 python 的字典數(shù)據(jù)格式,F(xiàn)alse、True、None 這些都是 python 的數(shù)據(jù)格式
{'a': 1, 'b': ['1', 2], 'c': True, 'd': False, 'e': None} <class 'dict'>
- 將 python 對(duì)象轉(zhuǎn)化為 json 格式數(shù)據(jù)并寫入到 json 文件當(dāng)中,使用的是 dump 方法,代碼如下
""" 將 python 對(duì)象轉(zhuǎn)化為 json 格式并寫入到一個(gè) json 文件當(dāng)中 """ data ={ 'a':1, 'b':['1', 2], 'c':True, 'd':False, 'e':None } # 將 python 對(duì)象轉(zhuǎn)化為 json 格式并寫入到一個(gè) json 文件當(dāng)中 with open('test.json',mode='w') as f: json.dump(data,f)
生成的json文件如下圖,是一個(gè)標(biāo)準(zhǔn)的 json 文件
- 將 json 文件讀取出來(lái),并轉(zhuǎn)換為 python 對(duì)象,使用的是 load 方法,代碼如下
# 讀取 test.json 文件并賦值給變量 data with open('test.json',mode='r') as f: data = json.load(f) # 打印變量 data print(data) # 打印 data 數(shù)據(jù)類型 print(type(data))
輸出的結(jié)果如下圖,已經(jīng)成功轉(zhuǎn)換為 python 的字典數(shù)據(jù)格式了
由上面我們可以總結(jié):
方法(dumps 、loads)和 方法(dump、load)之間區(qū)別,除了字面上一個(gè)加 s 一個(gè)沒(méi)有加以外,我們需要寫入到文件的時(shí)候就使用不加 s 的方法,例如:dump、load,如果只是想將 python 的數(shù)據(jù)格式 和 json 字符串之間進(jìn)行數(shù)據(jù)轉(zhuǎn)換,我們就需要使用加 s 的方法,例如:dumps、loads
四、dumps 常用參數(shù)
- indent:根據(jù)數(shù)據(jù)格式縮進(jìn)顯示,默認(rèn)為None,沒(méi)有縮進(jìn)
- ensure_ascii:對(duì)中文使用ASCII編碼,默認(rèn)為True,如果設(shè)置為True的話,如果想要在 json 格式中展示為中文的話,最好將這個(gè)設(shè)置為 False
代碼如下
""" 使用 json 里面的 dumps 方法,并添加 ensure_ascii,indent 這兩個(gè)參數(shù) """ # 定義一個(gè) python 對(duì)象 data ={ 'a':1, 'b':'從此以后一別兩寬', 'c':True, 'd':False, 'e':None } # 將 python 對(duì)象轉(zhuǎn)化為 json 字符串 json_data = json.dumps(data,ensure_ascii=False,indent=4) # 打印變量 json_data print(json_data)
輸出的結(jié)果如下,能夠?qū)⒅形某晒φ故境鰜?lái),并進(jìn)行了縮進(jìn),更加美觀
如果將ensure_ascii 參數(shù)設(shè)定為 True ,結(jié)果如下:并不能成功展示中文
當(dāng)然除了上面常用參數(shù)以外,還有很多,各位小伙伴可以下來(lái)自己練習(xí)
到此這篇關(guān)于Python中的json內(nèi)置庫(kù)詳解的文章就介紹到這了,更多相關(guān)Python的json庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python向Excel中插入圖片的簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了Python向Excel中插入圖片的簡(jiǎn)單實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Python使用XlsxWriter模塊操作Excel單元格插入jpg格式圖片的相關(guān)操作技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2018-04-04使用Python的Bottle框架寫一個(gè)簡(jiǎn)單的服務(wù)接口的示例
這篇文章主要介紹了使用Python的Bottle框架寫一個(gè)簡(jiǎn)單的服務(wù)接口的示例,基于Linux系統(tǒng)環(huán)境,需要的朋友可以參考下2015-08-08python 實(shí)現(xiàn)對(duì)數(shù)據(jù)集的歸一化的方法(0-1之間)
今天小編就為大家分享一篇python 實(shí)現(xiàn)對(duì)數(shù)據(jù)集的歸一化的方法(0-1之間),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07python將txt文檔每行內(nèi)容循環(huán)插入數(shù)據(jù)庫(kù)的方法
今天小編就為大家分享一篇python將txt文檔每行內(nèi)容循環(huán)插入數(shù)據(jù)庫(kù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12PyQt5實(shí)現(xiàn)簡(jiǎn)易電子詞典
這篇文章主要為大家詳細(xì)介紹了PyQt5實(shí)現(xiàn)簡(jiǎn)易電子詞典,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06通過(guò)LyScript實(shí)現(xiàn)從文本中讀寫ShellCode
LyScript 插件通過(guò)配合內(nèi)存讀寫,可實(shí)現(xiàn)對(duì)特定位置的ShellCode代碼的導(dǎo)出。本文將利用這一特性實(shí)現(xiàn)從文本中讀寫ShellCode,感興趣的可以了解一下2022-08-08Python使用擴(kuò)展庫(kù)pywin32實(shí)現(xiàn)批量文檔打印實(shí)例
這篇文章主要介紹了Python使用擴(kuò)展庫(kù)pywin32實(shí)現(xiàn)批量文檔打印實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04