1 概述
JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,易于人閱讀和編寫。
json是最常用的數(shù)據(jù)交換格式,在python編碼中需要將json字符串加載為python可以識(shí)別的python對象。
通常數(shù)據(jù)之間的傳輸、存儲(chǔ)是json字符串的形式;而數(shù)據(jù)的操作、分析則是對python對象進(jìn)行操作。
json字符串和python對象可以通過一下兩個(gè)函數(shù)互相轉(zhuǎn)換
| 函數(shù) | 描述 |
|---|---|
| json.dumps | 將 Python 對象編碼成 JSON 字符串 |
| json.loads | 將已編碼的 JSON 字符串解碼為 Python 對象 |
json 類型轉(zhuǎn)換到 python 的類型對照表
| 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格式字符串緊湊輸出,且無順序,其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過程中,dict對象的key只可以是string對象,如果是其他類型,那么在編碼過程中就會(huì)拋出ValueError的異常。skipkeys可以跳過那些非string對象當(dāng)作key的處理.
ensure_ascii:輸出真正的中文需要指定ensure_ascii=False
check_circular:如果check_circular為false,則跳過對容器類型的循環(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)顯示,讀起來更加清晰, indent的值,代表縮進(jìn)空格式:
separators:作用是去掉‘,’ ‘:’后面的空格,在傳輸數(shù)據(jù)的過程中,越精簡越好,冗余的東西全部去掉。
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è)功能可以用來實(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 對象:
import json
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = json.loads(jsonData)
print(text)