詳細(xì)解讀Python中的json操作
1.什么是Json?
JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,它是JavaScript的子集,易于人閱讀和編寫。
前端和后端進(jìn)行數(shù)據(jù)交互,其實(shí)就是JS和Python進(jìn)行數(shù)據(jù)交互

JSON注意事項(xiàng):
(1)名稱必須用雙引號(hào)(即:””)來(lái)包括
(2)值可以是雙引號(hào)包括的字符串、數(shù)字、true、false、null、JavaScript數(shù)組,或子對(duì)象。
2.python數(shù)據(jù)類型與json數(shù)據(jù)類型的映射關(guān)系
Python | JSON |
|---|---|
| dict | object |
| list, tuple | array |
| str, unicode | string |
| int, long, float | number |
| True | true |
| False | false |
| None | null |
3. json中常用的方法
在使用json這個(gè)模塊前,首先要導(dǎo)入json庫(kù):import json
| 方法 | 描述 |
| json.dumps() | 將 Python 對(duì)象編碼成 JSON 字符串 |
| json.loads() | 將已編碼的 JSON 字符串解碼為 Python 對(duì)象 |
| json.dump() | 將Python內(nèi)置類型序列化為json對(duì)象后寫入文件 |
| json.load() | 讀取文件中json形式的字符串元素轉(zhuǎn)化為Python類型 |
舉例:
3-1 json.dumps()
import json
data = {'name':'nanbei','age':18}
#將Python對(duì)象編碼成json字符串
print(json.dumps(data))結(jié)果:
{"name": "nanbei", "age": 18}
注: 在這里我們可以看到,原先的單引號(hào)已經(jīng)變成雙引號(hào)了
3-2 json.loads()
import json
data = {'name':'nanbei','age':18}
#將Python對(duì)象編碼成json字符串
#print(json.dumps(data))
#將json字符串編碼成Python對(duì)象
a = json.dumps(data)
print(json.loads(a))結(jié)果:
{'name': 'nanbei', 'age': 18}
在這里舉個(gè)元組和列表的例子:
import json data = (1,2,3,4) data_json = [1,2,3,4] #將Python對(duì)象編碼成json字符串 print(json.dumps(data)) print(json.dumps(data_json)) #將json字符串編碼成Python對(duì)象 a = json.dumps(data) b = json.dumps(data_json) print(json.loads(a)) print(json.loads(b))
結(jié)果:
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]
可以看到,元組和列表解析出來(lái)的均是數(shù)組。
3-3 json.dump()
import json
data = {
'nanbei':'haha',
'a':[1,2,3,4],
'b':(1,2,3)
}
with open('json_test.txt','w+') as f:
json.dump(data,f)查看結(jié)果:

3-4 json.load()
import json
data = {
'nanbei':'haha',
'a':[1,2,3,4],
'b':(1,2,3)
}
with open('json_test.txt','w+') as f:
json.dump(data,f)
with open('json_test.txt','r+') as f:
print(json.load(f))結(jié)果:
{'a': [1, 2, 3, 4], 'b': [1, 2, 3], 'nanbei': 'haha'}
4.參數(shù)詳解:
dump(obj,skipkeys=False, ensure_ascii=True, check_circular=True,
allow_nan=True, cls=None, indent=None, separators=None,
default=None, sort_keys=False, **kw):
# 函數(shù)作用: 將Python的對(duì)象轉(zhuǎn)變成JSON對(duì)象
# skipkeys: 如果為True的話,則只能是字典對(duì)象,否則會(huì)TypeError錯(cuò)誤, 默認(rèn)False
# ensure_ascii: 確定是否為ASCII編碼
# check_circular: 循環(huán)類型檢查,如果為True的話
# allow_nan: 確定是否為允許的值
# indent: 會(huì)以美觀的方式來(lái)打印,呈現(xiàn),實(shí)現(xiàn)縮進(jìn)
# separators: 對(duì)象分隔符,默認(rèn)為,
# encoding: 編碼方式,默認(rèn)為utf-8
# sort_keys: 如果是字典對(duì)象,選擇True的話,會(huì)按照鍵的ASCII碼來(lái)排序
對(duì)于dump來(lái)說,只是多了一個(gè)fp參數(shù)
dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True,
allow_nan=True, cls=None, indent=None, separators=None,
default=None, sort_keys=False, **kw)
Serialize ``obj`` as a JSON formatted stream to ``fp`` (a
``.write()``-supporting file-like object).
簡(jiǎn)單說就是dump需要一個(gè)類似文件指針的參數(shù)(并不是真正的指針,可以稱之為文件對(duì)象),與文件操作相結(jié)合,即先將Python文件對(duì)象轉(zhuǎn)化為json字符串再保存在文件中。。。
總結(jié)
到此這篇關(guān)于Python中json操作的文章就介紹到這了,更多相關(guān)Python json操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
跟老齊學(xué)Python之再深點(diǎn),更懂list
對(duì)于list,由于她的確非常非常龐雜,在python中應(yīng)用非常廣泛,所以,雖然已經(jīng)介紹完畢了基礎(chǔ)內(nèi)容,這里還要用一講深入一點(diǎn)點(diǎn),往往越深入越...2014-09-09
python 通過手機(jī)號(hào)識(shí)別出對(duì)應(yīng)的微信性別(實(shí)例代碼)
這篇文章主要介紹了python 通過手機(jī)號(hào)識(shí)別出對(duì)應(yīng)的微信性別,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
python?sns.countplot()?繪畫條形圖詳情
這篇文章主要介紹了python?sns.countplot()繪畫條形圖詳情,sns.countplot()用于畫類別特征的頻數(shù)條形圖,更多相關(guān)內(nèi)容需要的朋友可以參考一下2022-06-06
tkinter如何實(shí)現(xiàn)label超鏈接調(diào)用瀏覽器打開網(wǎng)址
這篇文章主要介紹了tkinter如何實(shí)現(xiàn)label超鏈接調(diào)用瀏覽器打開網(wǎng)址問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
Django實(shí)現(xiàn)前臺(tái)上傳并顯示圖片功能
這篇文章主要介紹了Django實(shí)現(xiàn)前臺(tái)上傳并顯示圖片功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Python?虛擬環(huán)境遷移到其他電腦的實(shí)現(xiàn)
本文主要介紹了Python?虛擬環(huán)境遷移到其他電腦的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
python 網(wǎng)絡(luò)編程詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了python 網(wǎng)絡(luò)編程詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-04-04
Python實(shí)現(xiàn)周日歷與時(shí)間相互轉(zhuǎn)換
周日歷是日常生活中不常用到的歷法系統(tǒng),一般用于政府、商務(wù)的會(huì)計(jì)年度或者學(xué)校教學(xué)日歷中。本文為大家介紹了如何利用Python語(yǔ)言實(shí)現(xiàn)周日歷與時(shí)間相互轉(zhuǎn)換,感興趣的可以學(xué)習(xí)一下2022-07-07

