python中json.dumps()和json.loads()的用法
一、JSON介紹
JSON代表JavaScript對(duì)象符號(hào)。它是一種輕量級(jí)的數(shù)據(jù)交換格式,用于存儲(chǔ)和交換數(shù)據(jù)。它是一種獨(dú)立于語(yǔ)言的格式,非常容易理解,因?yàn)樗举|(zhì)上是自描述的。 python中有一個(gè)內(nèi)置包,它支持JSON數(shù)據(jù),稱(chēng)為json。 JSON中的數(shù)據(jù)表示為quoted-strings,由大括號(hào){}之間的鍵值映射組成。通俗來(lái)說(shuō)就是一種在接口中易于使用的數(shù)據(jù)處理模塊,但是json不屬于數(shù)據(jù)格式。
二、Python和Json數(shù)據(jù)類(lèi)型的映射
JSON | Python |
---|---|
object | dict |
array | list |
string | str |
number | int |
true | True |
false | False |
null | None |
三、json.load(s)與json.dump(s)區(qū)別
json.load:表示讀取文件,返回python對(duì)象
json.dump:表示寫(xiě)入文件,文件為json字符串格式,無(wú)返回
json.dumps:將python中的字典類(lèi)型轉(zhuǎn)換為字符串類(lèi)型,返回json字符串 [dict→str]
json.loads:將json字符串轉(zhuǎn)換為字典類(lèi)型,返回python對(duì)象 [str→dict]
load和dump處理的主要是 文件
loads和dumps處理的是 字符串
json.load()從json文件中讀取數(shù)據(jù)
json.loads()將str類(lèi)型的數(shù)據(jù)轉(zhuǎn)換為dict類(lèi)型
json.dumps()將dict類(lèi)型的數(shù)據(jù)轉(zhuǎn)成str
json.dump()將數(shù)據(jù)以json的數(shù)據(jù)類(lèi)型寫(xiě)入文件中
四、測(cè)試
4.1 json.dumps()
import json data = { 'fruit':'apple', 'vegetable':'cabbage' } print(data,type(data)) data = json.dumps(data) # dict轉(zhuǎn)json print(data,type(data))
返回:
{'fruit': 'apple', 'vegetable': 'cabbage'} <class 'dict'>
{"fruit": "apple", "vegetable": "cabbage"} <class 'str'>
4.2 json.loads()
data = """{ "fruit": "apple", "vegetable": "cabbage" }""" # 一般此時(shí)data為request.text返回值 print(data, type(data)) data = json.loads(data) print(data, type(data))
返回:
{
"fruit": "apple",
"vegetable": "cabbage"
} <class 'str'>
{'fruit': 'apple', 'vegetable': 'cabbage'} <class 'dict'>
4.3 json.dump()
1.寫(xiě)str
a.py中:
data = "wyt" with open('b.json', 'w') as f: json.dump(data, f) with open('b.json','r',encoding='utf-8') as f : f_str = json.load(f) print(f_str,type(f_str))
返回:
wyt <class 'str'>
2.寫(xiě)dict
a.py中:
data = { 'fruit':'apple', 'vegetable':'cabbage' } with open('b.json', 'w') as f: json.dump(data, f) with open('b.json','r',encoding='utf-8') as f : f_str = json.load(f) print(f_str,type(f_str))
返回:
{'fruit': 'apple', 'vegetable': 'cabbage'} <class 'dict'>
4.4 json.load()
a.json中存在:
{ "fruit": "apple", "vegetable": "cabbage" }
a.py中:
with open('a.json','r',encoding='utf-8') as f : f_str = json.load(f) print(f_str,type(f_str))
返回:
{'fruit': 'apple', 'vegetable': 'cabbage'} <class 'dict'>
五、報(bào)錯(cuò)分析
5.1 本地代碼
data = '''{ 'fruit':'apple', 'vegetable':'cabbage' }''' data = json.loads(data)
5.2 報(bào)錯(cuò)返回
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 2 column 1 (char 2)
5.3 報(bào)錯(cuò)分析與解決
json內(nèi)部要使用雙引號(hào)。
data = """{ "fruit": "apple", "vegetable": "cabbage" }""" data = json.loads(data) print(data, type(data))
返回:
{'fruit': 'apple', 'vegetable': 'cabbage'} <class 'dict'>
補(bǔ)充:關(guān)于json.dumps(dict)和json.loads(str)函數(shù)總是記反,所以想了一個(gè)記憶方法。
首先我們先來(lái)看json.dumps(dict)函數(shù),是指將dict,也就是字典類(lèi)型的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為json數(shù)據(jù)格式,也就是字符串。
下面舉例說(shuō)明:
import json dict1={ "usr":"admin", "pdw":"123456", } print("****************使用json.dumps函數(shù)之前的dict1和使用函數(shù)后的類(lèi)型*****************") print(dict1) print('dict1的數(shù)據(jù)類(lèi)型是:',type(dict1)) json1=json.dumps(dict1) print('使用json.dumps函數(shù)后的json1的輸出如下') print(json1) print('使用json.dumps函數(shù)后的類(lèi)型是',type(json1))
代碼的運(yùn)行結(jié)果
接下來(lái)我們?cè)倏磈son.loads(str)是將json格式轉(zhuǎn)化為dict也就是字典格式。
話(huà)不多說(shuō),上例子,接上面代碼而寫(xiě)的
print("****************使用json.loads函數(shù)之前的str1和使用函數(shù)后的類(lèi)型*****************") dict2=json.loads(json1) print(dict2) print(type(dict2))
代碼運(yùn)行結(jié)果
通過(guò)例子我們已經(jīng)知道了json.dumps()的來(lái)龍去脈,那么如果快速的記住呢,以前我總是把json.dumps()和json.loads()記反了,突然間找到了一個(gè)巧記的方法,那就是json.dumps(dict)是把字典格式的轉(zhuǎn)換成json格式,也就括號(hào)里是字典,最后返回的是json,而函數(shù)名是dumps,可以注意到,dumps的首字母和字典dict的首字母都是d所以這樣就可以記住dumps是將dict轉(zhuǎn)換成json格式,那另一個(gè)loads也就是反之,將json轉(zhuǎn)換成字典格式。
總結(jié)
到此這篇關(guān)于python中json.dumps()和json.loads()用法的文章就介紹到這了,更多相關(guān)python json.dumps() json.loads()用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python3實(shí)現(xiàn)生成隨機(jī)密碼的方法
這篇文章主要介紹了Python3實(shí)現(xiàn)生成隨機(jī)密碼的方法,是Python程序設(shè)計(jì)中非常實(shí)用的一個(gè)技巧,需要的朋友可以參考下2014-08-08Python 通過(guò)正則表達(dá)式快速獲取電影的下載地址
這篇文章主要介紹了Python 通過(guò)正則表達(dá)式快速獲取電影的下載地址,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Python 隱藏輸入密碼時(shí)屏幕回顯的實(shí)例
今天小編就為大家分享一篇Python 隱藏輸入密碼時(shí)屏幕回顯的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02詳解MySQL數(shù)據(jù)類(lèi)型int(M)中M的含義
int(M)拆分來(lái)說(shuō),int是代表整型數(shù)據(jù)那,么中間的M應(yīng)該是代表多少位了,后來(lái)查mysql手冊(cè)也得知了我的理解是正確的,下面這篇文章小編就來(lái)舉例詳細(xì)說(shuō)明。 文中介紹的很詳細(xì),相信對(duì)大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們下面就來(lái)學(xué)習(xí)學(xué)習(xí)吧。2016-11-11細(xì)說(shuō)NumPy數(shù)組的四種乘法的使用
這篇文章主要介紹了細(xì)說(shuō)NumPy數(shù)組的四種乘法的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Pytorch數(shù)據(jù)類(lèi)型Tensor張量操作的實(shí)現(xiàn)
本文主要介紹了Pytorch數(shù)據(jù)類(lèi)型Tensor張量操作的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07python實(shí)現(xiàn)簡(jiǎn)單的TCP代理服務(wù)器
這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)單的TCP代理服務(wù)器,包含了完整的實(shí)現(xiàn)過(guò)程及對(duì)應(yīng)的源碼與說(shuō)明文檔下載,非常具有參考借鑒價(jià)值,需要的朋友可以參考下2014-10-10python 解決Windows平臺(tái)上路徑有空格的問(wèn)題
這篇文章主要介紹了python 解決Windows平臺(tái)上路徑有空格的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11