Python中的json內(nèi)置庫(kù)詳解
一、json作用
json 是用于存儲(chǔ)和交換數(shù)據(jù)的語(yǔ)法,是一種輕量級(jí)的數(shù)據(jù)交換式使用場(chǎng)景,主要用于以下場(chǎng)景
- 接口數(shù)據(jù)的傳輸
- 序列化
- 配置文件(不是很適合,因?yàn)椴荒軐?xiě)注釋,代碼可讀性較差一點(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ù)并寫(xiě)入到 json 文件當(dāng)中,使用的是 dump 方法,代碼如下
"""
將 python 對(duì)象轉(zhuǎn)化為 json 格式并寫(xiě)入到一個(gè) json 文件當(dāng)中
"""
data ={
'a':1,
'b':['1', 2],
'c':True,
'd':False,
'e':None
}
# 將 python 對(duì)象轉(zhuǎn)化為 json 格式并寫(xiě)入到一個(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)有加以外,我們需要寫(xiě)入到文件的時(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)為T(mén)rue,如果設(shè)置為T(mén)rue的話,如果想要在 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學(xué)習(xí)之循環(huán)方法詳解
循環(huán)是有著周而復(fù)始的運(yùn)動(dòng)或變化的規(guī)律;在 Python 中,循環(huán)的操作也叫做 遍歷。與現(xiàn)實(shí)中一樣,Python 中也同樣存在著無(wú)限循環(huán)的方法與有限循環(huán)的方法。本文將通過(guò)示例詳細(xì)講解Python中的循環(huán)方法,需要的可以參考一下2022-03-03
利用python如何在前程無(wú)憂高效投遞簡(jiǎn)歷
這篇文章主要給大家介紹了關(guān)于利用python如何在前程無(wú)憂高效投遞簡(jiǎn)歷的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
python SVM 線性分類模型的實(shí)現(xiàn)
這篇文章主要介紹了python SVM 線性分類模型的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python使用線程池傳遞多個(gè)參數(shù)的幾種方法
本文介紹了在Python中使用線程池傳遞多個(gè)參數(shù)的四種方法,并推薦使用stmap方式,這種方法代碼清晰易讀,參數(shù)傳遞靈活,易于維護(hù)和擴(kuò)展,適用于為每個(gè)設(shè)備指定不同參數(shù)的場(chǎng)景,需要的朋友可以參考下2026-04-04
Python操作Excel數(shù)據(jù)分組的完整指南
在日常數(shù)據(jù)處理工作中,Excel 數(shù)據(jù)分組是一項(xiàng)高頻使用的功能,本文將系統(tǒng)介紹使用 Python代 碼實(shí)現(xiàn) Excel 數(shù)據(jù)分組的方法并提供完整代碼示例,希望對(duì)大家有所幫助2026-05-05
詳解django使用include無(wú)法跳轉(zhuǎn)的解決方法
這篇文章主要介紹了詳解django使用include無(wú)法跳轉(zhuǎn)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03

