python標(biāo)準(zhǔn)庫(kù)模塊之json庫(kù)的基礎(chǔ)用法
前言
json,全稱(chēng)為JavaScript Object Notation,也就是JavaScript對(duì)象標(biāo)記,通過(guò)對(duì)象和數(shù)組的組合表示數(shù)據(jù),雖然構(gòu)造簡(jiǎn)潔但是結(jié)構(gòu)化程度非常高,是一種輕量級(jí)的數(shù)據(jù)交換格式。
作用
主要用于將python對(duì)象編碼為json格式輸出或存儲(chǔ),以及將json格式對(duì)象解碼為python對(duì)象。
一個(gè) JSON 對(duì)象可以寫(xiě)為如下形式:
[{ "name": "小明", "height": "170", "age": "18" }, { "name": "小紅", "height": "165", "age": "20" }]
由中括號(hào)包圍的就相當(dāng)于列表類(lèi)型,列表中的每個(gè)元素可以是任意類(lèi)型,這個(gè)示例中它是字典類(lèi)型,由大括號(hào)包圍。
JSON 可以由以上兩種形式自由組合而成,可以無(wú)限次嵌套,結(jié)構(gòu)清晰,是數(shù)據(jù)交換的極佳方式。
下面先來(lái)了解一下json中l(wèi)oads,和load
loads,load的用法
例如,有一段 JSON 形式的字符串,它是 str 類(lèi)型,我們用 json.loads轉(zhuǎn)換成python的數(shù)據(jù)結(jié)構(gòu),變成列表或字典,這樣我們就能進(jìn)行操作了。
import json data = ''' [{ "name": "小明", "height": "170", "age": "18" }, { "name": "小紅", "height": "165", "age": "20" }] ''' # 打印data類(lèi)型 print(type(data)) # json類(lèi)型的數(shù)據(jù)轉(zhuǎn)化為python類(lèi)型的數(shù)據(jù) new_data = json.loads(data) # 打印data類(lèi)型 print(type(new_data))
運(yùn)行結(jié)果如下
這樣來(lái)我們就可以用索引獲取對(duì)應(yīng)的內(nèi)容了,例如想要獲取第一個(gè)元素里的name屬性,可以使用如下方式:
import json data = ''' [{ "name": "小明", "height": "170", "age": "18" }, { "name": "小紅", "height": "165", "age": "20" }] ''' # 打印data類(lèi)型 print(type(data)) # json類(lèi)型的數(shù)據(jù)轉(zhuǎn)化為python類(lèi)型的數(shù)據(jù) new_data = json.loads(data) # 獲取內(nèi)容 name = new_data[0]['name'] new_name = new_data[0].get('name') # 打印轉(zhuǎn)換后data類(lèi)型 print(type(new_data)) print(name) print(new_name)
運(yùn)行結(jié)果
以上就是loads的用法。
load的用法是把json格式文件,轉(zhuǎn)換成python類(lèi)型的數(shù)據(jù)。
注意 :load方法操作的是整個(gè)文件對(duì)象,這里是將整個(gè)整個(gè)文件對(duì)象里面的內(nèi)容轉(zhuǎn)化為json對(duì)象。(下圖是文件操作對(duì)象)
示例
import json import json # load的用法是把json格式文件,轉(zhuǎn)換成python類(lèi)型的數(shù)據(jù)。 # 構(gòu)建該文件的文件對(duì)象 with open('test1.json',encoding='utf-8')as fp: # 加載垓文件對(duì)象,轉(zhuǎn)換為python類(lèi)型的數(shù)據(jù) pyth_list = json.load(fp) print(pyth_list) print(type(pyth_list)) print(type(pyth_list[0]))
需要有一個(gè)文件操作對(duì)象運(yùn)行結(jié)果
以上就是loads和load的用法,兩種方法可以在適當(dāng)?shù)膱?chǎng)景下使用。
dumps,dump的用法
json.dumps()函數(shù),把python類(lèi)型的數(shù)據(jù)轉(zhuǎn)換成json字符串
json.dump()函數(shù), 把python類(lèi)型的數(shù)據(jù)以json格式儲(chǔ)存到文件中
dumps函數(shù)
import json data = ''' [{ "name": "小明", "height": "170", "age": "18" }, { "name": "小紅", "height": "165", "age": "20" }] ''' # 打印要來(lái)data類(lèi)型 print(type(data)) # json類(lèi)型的數(shù)據(jù)轉(zhuǎn)化為python類(lèi)型的數(shù)據(jù) new_data = json.loads(data) # 把python類(lèi)型的數(shù)據(jù)轉(zhuǎn)換成json字符串 lit = json.dumps(new_data) # 打印轉(zhuǎn)換后data類(lèi)型 print(type(new_data)) print(type(lit))
運(yùn)行結(jié)果
其實(shí)loads和dumps的用法都是一致的,loads是將json類(lèi)型的數(shù)據(jù)轉(zhuǎn)化為python類(lèi)型的數(shù)據(jù),而dumps是將json類(lèi)型的數(shù)據(jù)轉(zhuǎn)化為python類(lèi)型的數(shù)據(jù)。相當(dāng)于一個(gè)是編碼一個(gè)是解碼。
dump函數(shù)
把python類(lèi)型的數(shù)據(jù)以json格式儲(chǔ)存到文件中
import json import json data = ''' [{ "name": "小明", "height": "170", "age": "18" }, { "name": "小紅", "height": "165", "age": "20" }] ''' # json類(lèi)型的數(shù)據(jù)轉(zhuǎn)化為python類(lèi)型的數(shù)據(jù) new_data = json.loads(data) # 把python類(lèi)型的數(shù)據(jù)以json格式儲(chǔ)存到文件中 # 構(gòu)建要寫(xiě)入文件對(duì)象 with open('test1.json','w',encoding='utf-8')as fp: # 把python類(lèi)型的數(shù)據(jù)以json格式儲(chǔ)存到文件中 json.dump(new_data,fp,ensure_ascii=False)
為了輸出中文,還需要指定參數(shù) ensure_ascii 為 False
儲(chǔ)存文件
結(jié)語(yǔ)
到此這篇關(guān)于python標(biāo)準(zhǔn)庫(kù)模塊之json庫(kù)的基礎(chǔ)用法的文章就介紹到這了,更多相關(guān)python標(biāo)準(zhǔn)庫(kù)模塊json庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用python 計(jì)算百分位數(shù)實(shí)現(xiàn)數(shù)據(jù)分箱代碼
這篇文章主要介紹了使用python 計(jì)算百分位數(shù)實(shí)現(xiàn)數(shù)據(jù)分箱代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03python中關(guān)于時(shí)間和日期函數(shù)的常用計(jì)算總結(jié)(time和datatime)
python中關(guān)于時(shí)間和日期函數(shù)有time和datatime使用介紹,需要的朋友可以參考下2013-03-03python flask框架實(shí)現(xiàn)重定向功能示例
這篇文章主要介紹了python flask框架實(shí)現(xiàn)重定向功能,結(jié)合實(shí)例形式分析了flask框架重定向功能的實(shí)現(xiàn)與使用方法,需要的朋友可以參考下2019-07-07python3 實(shí)現(xiàn)函數(shù)寫(xiě)文件路徑的正確方法
今天小編就為大家分享一篇python3 實(shí)現(xiàn)函數(shù)寫(xiě)文件路徑的正確方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11Python中三維坐標(biāo)空間繪制的實(shí)現(xiàn)
這篇文章主要介紹了Python中三維坐標(biāo)空間繪制的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09