python中json的序列化與反序列化有很多庫,具體選擇使用哪乙個,或者哪乙個速度更快呢?
先上結果
json序列化與反序列化速度對比(按總時間排序:測試資料100 * 10000)
ujson 序列化:
2.084 反序列化:
1.157 總時間:
3.241
yajl 序列化:
1.910 反序列化:
1.970 總時間:
3.880
cjson 序列化:
3.305 反序列化:
1.328 總時間:
4.632
******json 序列化:
10.279 反序列化:
4.658 總時間:
14.937
stdlib json 序列化:
7.013 反序列化:
8.594 總時間:
15.607
其中,除了stdlib json也就是內建的json.dumps外,其他都是第三方包。資料量較少時,速度幾乎沒有區別,無所謂選擇哪乙個。資料量大的情況下,ujson的總體表現最好,但序列化不如yajl
而django中,如果只是response乙個json物件,可以直接使用jsonresonse
用法為:
''預設採用內建方式進json格式化後返回。如果資料不多,著實方便(django1.7引入)
測試**
來自rtyler,在其基礎上新增了ujson
'''
'''import time
import pickle
import yajl
try:
import cjson
except importerror:
cjson =
none
try:
import ******json
except importerror:
******json =
none
try:
import ujson
except importerror:
ujson =
none
try:
import json
except importerror:
json =
none
default_data =,}
defttt
(f, data=
none
, x=
100*
10000):
start = time.time(
)while x:
x -=
1 foo = f(data)
return time.time(
)- start
defprofile
(serial, deserial, data=
none
, x=
100*
10000):
ifnot data:
data = default_data
squashed = serial(data)
return
(ttt(serial, data, x)
, ttt(deserial, squashed, x)
)def
test
(serial, deserial, data=
none):
ifnot data:
data = default_data
assert deserial(serial(data)
)== data
contenders =[(
'yajl'
,(yajl.encoder(
).encode, yajl.decoder(
).decode)),
]if cjson:
('cjson'
,(cjson.encode, cjson.decode)))
if ******json:
('******json'
,(******json.dumps, ******json.loads)))
if json:
('stdlib json'
,(json.dumps, json.loads)))
if ujson:
('ujson'
,(ujson.dumps, ujson.loads)))
for name, args in contenders:
test(
*args)
x, y = profile(
*args)
print
("%-11s serialize: %0.3f deserialize: %0.3f total: %0.3f"%(
name, x, y, x + y)
)
5個開源庫的JSON解析速度測試
ios5新增了json解析的api,我們將其和其他五個開源的json解析庫進行了解析速度的測試,下面是測試的結果。我們選擇的測試物件包含下面的這幾個框架,其中nsjsonserialization是ios5系統新增的json解析的api,需要ios5的環境,如果您在更低的版本進行測試,應該遮蔽相應的...
python中json 庫的使用(常用方法)
python 資料結構轉換為 json import json data json str json.dumps data print json 物件 json str 輸出 json 物件 可以將乙個 json 編碼的字串轉換回乙個 python 資料結構,並取指定的值 b json.loads ...
python中的json解析
主要實現以下功能 解析 與構造json,即encoder and decoder 官方指導 中文教程 前者將obj轉化為json str,後者將str轉化為python物件,如果json字串是個object,轉化為dict,若是array則轉化為list json寫法 表示array的json字串 ...