1 概述
JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式涕滋,易于人閱讀和編寫。
json是最常用的數(shù)據(jù)交換格式昭灵,在python編碼中需要將json字符串加載為python可以識(shí)別的python對(duì)象歇竟。
通常數(shù)據(jù)之間的傳輸、存儲(chǔ)是json字符串的形式液走;而數(shù)據(jù)的操作、分析則是對(duì)python對(duì)象進(jìn)行操作贾陷。
json字符串和python對(duì)象可以通過(guò)一下兩個(gè)函數(shù)互相轉(zhuǎn)換
函數(shù) | 描述 |
---|---|
json.dumps | 將 Python 對(duì)象編碼成 JSON 字符串 |
json.loads | 將已編碼的 JSON 字符串解碼為 Python 對(duì)象 |
json 類型轉(zhuǎn)換到 python 的類型對(duì)照表
JSON | Python |
---|---|
object | dict |
array | list |
string | unicode |
number (int) | int, long |
number (real) | float |
true | True |
false | False |
null | None |
2 詳解
2.1 json.dumps
格式
編碼后的json格式字符串緊湊輸出缘眶,且無(wú)順序,其dumps方法提供一些可選的參數(shù)髓废,讓輸出的格式提高可讀性巷懈。
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
參數(shù)解釋
參照:https://blog.csdn.net/liangxy2014/article/details/78985057
skipkeys:在encoding過(guò)程中,dict對(duì)象的key只可以是string對(duì)象慌洪,如果是其他類型顶燕,那么在編碼過(guò)程中就會(huì)拋出ValueError的異常。skipkeys可以跳過(guò)那些非string對(duì)象當(dāng)作key的處理.
ensure_ascii:輸出真正的中文需要指定ensure_ascii=False
check_circular:如果check_circular為false冈爹,則跳過(guò)對(duì)容器類型的循環(huán)引用檢查涌攻,循環(huán)引用將導(dǎo)致溢出錯(cuò)誤
allow_nan:如果allow_nan為假,則ValueError將序列化超出范圍的浮點(diǎn)值(nan犯助、inf癣漆、-inf),嚴(yán)格遵守JSON規(guī)范剂买,而不是使用JavaScript等價(jià)值(nan、Infinity癌蓖、-Infinity)瞬哼。
indent:根據(jù)數(shù)據(jù)格式縮進(jìn)顯示,讀起來(lái)更加清晰, indent的值租副,代表縮進(jìn)空格式:
separators:作用是去掉‘坐慰,’ ‘:’后面的空格,在傳輸數(shù)據(jù)的過(guò)程中用僧,越精簡(jiǎn)越好结胀,冗余的東西全部去掉赞咙。
encoding:編碼方式
defaul:default(obj)是一個(gè)函數(shù),它應(yīng)該返回一個(gè)可序列化的obj版本或引發(fā)類型錯(cuò)誤糟港。默認(rèn)值只會(huì)引發(fā)類型錯(cuò)誤攀操。
sort_keys:告訴編碼器按照字典key排序(a到z)輸出
使用方法
#將dict編碼為 JSON 格式數(shù)據(jù)
import json
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
data2 = json.dumps(data)
print(data2)
json.load
格式
json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
參數(shù)解釋
參照:https://blog.csdn.net/daerzei/article/details/100598901
encoding:編碼方式
object_pairs_hook:它會(huì)將結(jié)果以key-value有序列表的形式返回
object_hook:它會(huì)將(loads的)返回結(jié)果字典替換為你所指定的類型,這個(gè)功能可以用來(lái)實(shí)現(xiàn)自定義解碼器,
parse_float:它如果被指定的話秸抚,在解碼json字符串的時(shí)候速和,符合float類型的字符串將被轉(zhuǎn)為你所指定的
parse_int:它如果被指定的話,在解碼json字符串的時(shí)候剥汤,符合int類型的字符串將被轉(zhuǎn)為你所指定的
parse_constant:它如果被指定的話颠放,在解碼json字符串的時(shí)候,如果出現(xiàn)以以下字符串:-Infinity吭敢,Infinity碰凶,NaN那么指定的parse_constant方法將會(huì)被調(diào)用到
使用方法
#Python 解碼 JSON 對(duì)象:
import json
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = json.loads(jsonData)
print(text)