詳細(xì)解讀Python中的json操作
1.什么是Json?
JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,它是JavaScript的子集,易于人閱讀和編寫。
前端和后端進行數(shù)據(jù)交互,其實就是JS和Python進行數(shù)據(jù)交互
JSON注意事項:
(1)名稱必須用雙引號(即:””)來包括
(2)值可以是雙引號包括的字符串、數(shù)字、true、false、null、JavaScript數(shù)組,或子對象。
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這個模塊前,首先要導(dǎo)入json庫:import json
方法 | 描述 |
json.dumps() | 將 Python 對象編碼成 JSON 字符串 |
json.loads() | 將已編碼的 JSON 字符串解碼為 Python 對象 |
json.dump() | 將Python內(nèi)置類型序列化為json對象后寫入文件 |
json.load() | 讀取文件中json形式的字符串元素轉(zhuǎn)化為Python類型 |
舉例:
3-1 json.dumps()
import json data = {'name':'nanbei','age':18} #將Python對象編碼成json字符串 print(json.dumps(data))
結(jié)果:
{"name": "nanbei", "age": 18}
注: 在這里我們可以看到,原先的單引號已經(jīng)變成雙引號了
3-2 json.loads()
import json data = {'name':'nanbei','age':18} #將Python對象編碼成json字符串 #print(json.dumps(data)) #將json字符串編碼成Python對象 a = json.dumps(data) print(json.loads(a))
結(jié)果:
{'name': 'nanbei', 'age': 18}
在這里舉個元組和列表的例子:
import json data = (1,2,3,4) data_json = [1,2,3,4] #將Python對象編碼成json字符串 print(json.dumps(data)) print(json.dumps(data_json)) #將json字符串編碼成Python對象 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]
可以看到,元組和列表解析出來的均是數(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的對象轉(zhuǎn)變成JSON對象
# skipkeys: 如果為True的話,則只能是字典對象,否則會TypeError錯誤, 默認(rèn)False
# ensure_ascii: 確定是否為ASCII編碼
# check_circular: 循環(huán)類型檢查,如果為True的話
# allow_nan: 確定是否為允許的值
# indent: 會以美觀的方式來打印,呈現(xiàn),實現(xiàn)縮進
# separators: 對象分隔符,默認(rèn)為,
# encoding: 編碼方式,默認(rèn)為utf-8
# sort_keys: 如果是字典對象,選擇True的話,會按照鍵的ASCII碼來排序
對于dump來說,只是多了一個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).
簡單說就是dump需要一個類似文件指針的參數(shù)(并不是真正的指針,可以稱之為文件對象),與文件操作相結(jié)合,即先將Python文件對象轉(zhuǎn)化為json字符串再保存在文件中。。。
總結(jié)
到此這篇關(guān)于Python中json操作的文章就介紹到這了,更多相關(guān)Python json操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?Matplotlib中使用plt.savefig存儲圖片的方法舉例
pytorch下保存圖像有很多種方法,但是這些基本上都是基于圖像處理的,將圖像的像素指定一定的維度,下面這篇文章主要給大家介紹了關(guān)于Python?Matplotlib中使用plt.savefig存儲圖片的相關(guān)資料,需要的朋友可以參考下2023-02-02PyTorch模型容器與AlexNet構(gòu)建示例詳解
這篇文章主要為大家介紹了PyTorch模型容器與AlexNet構(gòu)建示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07python 讀取dicom文件,生成info.txt和raw文件的方法
今天小編就為大家分享一篇python 讀取dicom文件,生成info.txt和raw文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01flask使用session保存登錄狀態(tài)及攔截未登錄請求代碼
這篇文章主要介紹了flask使用session保存登錄狀態(tài)及攔截未登錄請求代碼,具有一定借鑒價值,需要的朋友可以參考下2018-01-01ChatGPT教你用Python實現(xiàn)BinarySearchTree詳解
這篇文章主要為大家介紹了ChatGPT教你用Python實現(xiàn)BinarySearchTree詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02