python的Json模塊:
load 與 loads 都是用于encode編碼空民,將python數(shù)據(jù)(對象)轉(zhuǎn)換成json數(shù)據(jù)(對象)
dump 與 dumps 都是用于decode解碼刃唐,將json數(shù)據(jù)(對象)轉(zhuǎn)換成python數(shù)據(jù)(對象)
load 與 loads 和 dump 與 dumps 的區(qū)別:
load,dump類似,同樣都是操作文件句柄界轩,比如本地有一個a.json文件名的json文件
使用 json_file = json.load(open('a.json'))
使用 json.dump(dict,open('a.json',"w"))將dict字典序列化為json對象存入到a.json文件當中
loads,dumps類似画饥,同樣都是操作內(nèi)存對象,
loads將python數(shù)據(jù)轉(zhuǎn)化成json數(shù)據(jù)
dumps將json數(shù)據(jù)轉(zhuǎn)化成python數(shù)據(jù)
數(shù)據(jù)轉(zhuǎn)換
Decoder數(shù)據(jù)轉(zhuǎn)換:
JSON --> Python
object dict
array list
string str
number (int) int
number (real) float
true True
false False
null None
Encoder數(shù)據(jù)轉(zhuǎn)換:
Python --> JSON
dict object
list, tuple array
str string
int, float, int- numver
float-derived Enums number
True true
False false
None null
序列化: 將數(shù)據(jù)結(jié)構(gòu)或?qū)ο筠D(zhuǎn)換成二進制串的過程
反序列化:將在序列化過程中所生成的二進制串轉(zhuǎn)換成數(shù)據(jù)結(jié)構(gòu)或者對象的過程
例子:
# loads方法
import json
jsonData = '{"a":1,"b":2}'; ==>python利用type方法看到j(luò)sonData是str對象
test = json.loads(jsonData) ==>python利用type方法看到test的是dict字典對象
print (test)
print (test.get('b'))
#結(jié)果
{'b': 2, 'a': 1}
2
# dumps dump,load方法
data = [{"a":"aaa","b":"bbb","c":[1,2,3,(4,5,6)]},33,'tantengvip',True] ==>python的列表
data1 = json.dumps(data) ==>data1為字符串類型
file = open('data.json','a')
json.dump(data1,file)
file.close()
file1 = open('data.json','r')
data2 = json.load(file1)
print (data2)
json格式數(shù)據(jù)轉(zhuǎn)換存在第三方庫:
Demjson
gitgub地址:
https://github.com/dmeranda/demjson
example:
>>> import demjson
>>> demjson.encode( ['one',42,True,None] ) # From Python to JSON
'["one",42,true,null]'
>>> demjson.decode( '["one",42,true,null]' ) # From JSON to Python
['one', 42, True, None]