概述
Python3中我們利用內(nèi)置模塊json
解碼和編碼JSON對(duì)象
傲宜,JSON(JavaScript Object Notation)是指定 RFC 7159(廢棄了RFC 4627)和 ECMA-404是一種輕量級(jí)數(shù)據(jù)交換格式,受 JavaScript對(duì)象文字語(yǔ)法的啟發(fā) (雖然它不是JavaScript 1的嚴(yán)格子集)又谋。下面為Python對(duì)象-->JSON對(duì)象的對(duì)照關(guān)系表。
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |
dumps編碼
我們利用dumps
將Python對(duì)象編碼為JSON對(duì)象
,當(dāng)然dumps
只完成了序列化為str,而dump
必須傳文件描述符肿仑,將序列化的str保存到文件中,它們的函數(shù)定義為
dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
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)
編碼字典
import json
D = {'one': 1, 'two': 2, 'three': 3}
J = json.dumps(D)
print(J)
示例結(jié)果:
{"one": 1, "two": 2, "three": 3}
編碼列表
import json
L = [1, 'Python ', {'one': 1, 'two': 2, 'three': 3}, '']
J = json.dumps(L)
print(J)
示例結(jié)果:
[1, "Python ", {"one": 1, "two": 2, "three": 3}, ""]
編碼
import json
S = 'Python'
J = json.dumps(S)
print(J)
示例結(jié)果:
"Python"
格式化輸出JSON
import json
L = [1, 'Python ', {'one': 1, 'two': 2, 'three': 3}, True]
J = json.dumps(L, sort_keys=True, indent=4)
print(J)
示例結(jié)果:
[
1,
"Python ",
{
"one": 1,
"three": 3,
"two": 2
},
true
]
loads解碼
我們利用loads
用于解碼 JSON對(duì)象
碎税。解碼結(jié)果即與之對(duì)應(yīng)的Python對(duì)象
類型尤慰。當(dāng)然loads
只完成了反序列化,load
只接收文件描述符雷蹂,完成讀取文件和反序列化伟端。它們的函數(shù)定義為
loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
比如我們用來(lái)解碼上個(gè)示例的數(shù)據(jù)
import json
jsondata = '''
[
1,
"Python ",
{
"one": 1,
"three": 3,
"two": 2
},
true
]
'''
J = json.loads(jsondata)
print(type(J))
print(J)
示例結(jié)果:
<class 'list'>
[1, 'Python ', {'one': 1, 'three': 3, 'two': 2}, True]
可以看到我們成功對(duì)上個(gè)例子中的JSON對(duì)象進(jìn)行了解碼,并且最終的解碼結(jié)果為Python列表對(duì)象類型匪煌,符合Python對(duì)象-JSON對(duì)象對(duì)照表的結(jié)果荔泳。