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