python json模块使用详情
?
python其他知識(shí)目錄?
?
#json。數(shù)據(jù)交換用到j(luò)son文件。json是特殊的字符串。訪問(wèn)網(wǎng)站,返回的就是json
1、json簡(jiǎn)介:
定義:JSON(JavaScript Object Notation, JS 對(duì)象簡(jiǎn)譜) 是一種輕量級(jí)的數(shù)據(jù)交換格式。
特點(diǎn):簡(jiǎn)潔和清晰的層次結(jié)構(gòu)使得 JSON 成為理想的數(shù)據(jù)交換語(yǔ)言。 易于人閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成,并有效地提升網(wǎng)絡(luò)傳輸效率。
在 JS 語(yǔ)言中,一切都是對(duì)象。因此,任何支持的類(lèi)型都可以通過(guò) JSON 來(lái)表示,例如字符串、數(shù)字、對(duì)象、數(shù)組等。但是對(duì)象和數(shù)組是比較特殊且常用的兩種類(lèi)型:
對(duì)象表示為鍵值對(duì)
數(shù)據(jù)由逗號(hào)分隔
花括號(hào)保存對(duì)象
方括號(hào)保存數(shù)組
序列化簡(jiǎn)單定義:變成json格式。定義:變成json格式。
反序列化簡(jiǎn)單定義: json格式變其它
2、注意點(diǎn)
注意點(diǎn):
兩種語(yǔ)言之間數(shù)據(jù)類(lèi)型的差異,用json交換。
外層必須是字典或列表這兩個(gè)容器類(lèi)數(shù)據(jù)類(lèi)型。
必須是雙引號(hào)(因?yàn)閖ava等其它語(yǔ)言有使用雙引號(hào)表示字符串,單引號(hào)不表示字符串)
json是字符串
json中不存在元組。序列化元組之后元組變列表;不能是集合,序列化集合報(bào)錯(cuò)。序列化支持類(lèi)型可以進(jìn)Python官方文件介紹里面有介紹。
以后傳值就是傳一個(gè)也要用字典或列表
字典格式與json格式對(duì)比:
字典格式:
json格式
{ "a": 123, "b": { #必須是雙引號(hào)(因?yàn)閖ava等其它語(yǔ)言有使用雙引號(hào)表示字符串,單引號(hào)不表示字符串) "x": ["A", "B", "C"] } }可以看到, Dictionary和JSON非常接近, 而Python中的json庫(kù)提供的主要功能, 也是兩者之間的轉(zhuǎn)換.
3、json使用(常用):
JSON(JavaScript Object Notation, JS 對(duì)象標(biāo)記) 是一種輕量級(jí)的數(shù)據(jù)交換格式。JSON的數(shù)據(jù)格式其實(shí)就是python里面的字典格式,里面可以包含方括號(hào)括起來(lái)的數(shù)組,也就是python里面的列表。
在python中,有專(zhuān)門(mén)處理json格式的模塊—— json 和 picle模塊
Json 模塊提供了四個(gè)方法: dumps、dump、loads、load
pickle 模塊也提供了四個(gè)功能:dumps、dump、loads、load
序列化:將python的值轉(zhuǎn)換為json格式的字符串。
反序列化:將json格式的字符串轉(zhuǎn)換成python的數(shù)據(jù)類(lèi)型
?
如下驗(yàn)證:dumps可以格式化大部分的基本數(shù)據(jù)類(lèi)型為字符串
1)字典序列化: import json dic={"name":"mcw","age":18} xu=json.dumps(dic) print(xu,type(xu),type(dic)) --------------結(jié)果: {"name": "mcw", "age": 18} <class 'str'> <class 'dict'> )列表序列化與反序列化: import json li=[1,2] xu=json.dumps(li) print(xu,type(xu),type(li)) fx=json.loads(xu) print(fx,type(fx)) ------------結(jié)果: [1, 2] <class 'str'> <class 'list'> [1, 2] <class 'list'>3)字符串序列化與反序列化: import json mcwstr="xiaoma" xu=json.dumps(mcwstr) print(xu,type(xu),type(mcwstr)) fx=json.loads(xu) print(fx,type(fx)) ---------------結(jié)果; "xiaoma" <class 'str'> <class 'str'> xiaoma <class 'str'>4)整型序列化與反序列化 import json mcwint=2 xu=json.dumps(mcwint) print(xu,type(xu),type(mcwint)) fx=json.loads(xu) print(fx,type(fx)) ---------------結(jié)果: 2 <class 'str'> <class 'int'> 2 <class 'int'>5)浮點(diǎn)型序列化與反序列化 import json mcwfloat=2.03 xu=json.dumps(mcwfloat) print(xu,type(xu),type(mcwfloat)) fx=json.loads(xu) print(fx,type(fx)) --------------------結(jié)果: 2.03 <class 'str'> <class 'float'> 2.03 <class 'float'>6)布爾型序列化與反序列化: import json mcwbool=True xu=json.dumps(mcwbool) print(xu,type(xu),type(mcwbool)) fx=json.loads(xu) print(fx,type(fx)) ------------------結(jié)果: true <class 'str'> <class 'bool'> True <class 'bool'>7)None序列化與反序列化 import json mcwnone=None xu=json.dumps(mcwnone) print(xu,type(xu),type(mcwnone)) fx=json.loads(xu) print(fx,type(fx)) ---------------結(jié)果; null <class 'str'> <class 'NoneType'> None <class 'NoneType'>?4、json序列化過(guò)程中的中文顯示
import json v = {'k1':'alex','k2':'魔降風(fēng)云變'} print(json.dumps(v)) val = json.dumps(v,ensure_ascii=False) print(val) --------------------結(jié)果: {"k1": "alex", "k2": "\u9b54\u964d\u98ce\u4e91\u53d8"} {"k1": "alex", "k2": "魔降風(fēng)云變"}?5、json.dump 和json.load(不常用)
序列化:import json v = {'k1':'yh','k2':'小馬過(guò)河'} f = open('xiaoma.txt',mode='w',encoding='utf-8') #文件不存在就會(huì)生成 val = json.dump(v,f) print(val) f.close() ----------------結(jié)果: None #dump將內(nèi)容序列化,并寫(xiě)入打開(kāi)的文件中。 反序列化:
import json f = open('xiaoma.txt',mode='r',encoding='utf-8') data = json.load(f) f.close() print(data,type(data))
---------------結(jié)果:
{'k1': 'yh', 'k2': '小馬過(guò)河'} <class 'dict'>
?
?
參考:
1)https://www.cnblogs.com/tjuyuan/p/6795860.html
2)http://www.runoob.com/python/python-json.html
3)https://www.jb51.net/article/139498.htm
轉(zhuǎn)載于:https://www.cnblogs.com/machangwei-8/p/10724781.html
總結(jié)
以上是生活随笔為你收集整理的python json模块使用详情的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 你真的理解JS的继承了吗?
- 下一篇: Yarn ResourceManager