python中的json解釋庫有好幾個,不同版本使用方法不同。
常用有 json-py 與smiplejson 兩個包
其中,json-py 包含json.py外,還有一個minjson,兩者用法上有差別:
import一樣
import json # 都是如此import的。
import minjson
#
json-py庫用法
json.read( json_obj )
# Converting JSON to Python
json.write(python_obj)
# Converting Python to JSON
#j
son的minjson用法
minjson.read( json_obj )#同上
minjson.write(python_obj)
#
smiplejson 的用法
json.loads(json_obj)
# Converting JSON to Python
json.dumps(python_obj)
# Converting Python to JSON
python2.5沒有內置的json,要手動安裝。我們現在使用的是 json-py3.4
python2.6內置json解釋庫,是 smiplejson
smiplejson 2.09 下載 http://pypi.python.org/pypi/simplejson/
json-py 3.4 下載 http://sourceforge.net/projects/json-py/files/
經過我測試兩者的效率,發現
python2.5.4, XP下,1K次讀/寫結果如下:
------------------------------------------------------------
minjosn : 1.0737601508
json : 4.49144874205
simplejson:
0.24600865082
---------------------------------------------------------------
python2.5.4, centOS5.3 (lniux)下:
minjosn :
1.8272049427
json : 8.26148796082
simplejson: 3.87293195724
-------------------------------------------------------------
以上令我不解的是XP下速度會比lniux快???
結論:
基於以上,個人感覺使用 minjson.py比較保險,現在我們開發使用的是 json-py速度最慢那個。。。
因為minjson.py只有一個文件,建議直接復制到工程公共庫目錄下,直接使用,免去安裝痛苦。
附上測試腳本 ,希望有人在不同機子上測試結果帖上來。。。
- #coding:utf8
- import timeit
- import json
- import minjson
- import simplejson
- js_obj = ''''' ["我是中文",
- {
- "bar":["測試阿", null, 1.0, 2], "bool":true
- }]'''
- py_obj= [u"我是中文",
- {
- "bar":[u"測試阿", None, 1.0, 2], "bool":True
- }]
- def test_minjson():
- minjson.read(js_obj) #可注釋其中一句,單測讀/寫
- minjson.write(py_obj)
- def test_json():
- json.read(js_obj) #可注釋其中一句,單測讀/寫
- json.write(py_obj)
- def test_smpjson():
- simplejson.loads(js_obj)
- simplejson.dumps(py_obj)
- if __name__=='__main__':
- from timeit import Timer
- t = Timer("test_minjson()", "from __main__ import test_minjson")
- print 'minjosn :', t.timeit(number = 10000) # 默認number = 100萬次
- t = Timer("test_json()", "from __main__ import test_json")
- print 'json :', t.timeit(number = 10000) # 默認number = 100萬次
- t = Timer("test_smpjson()", "from __main__ import test_smpjson")
- print 'simplejson:', t.timeit(number = 10000) # 默認number = 100萬次
附錄
python從web接口上查詢信息
>>> import urllib
>>> url='http://a.bkeep.com/page/api/saInterface/searchServerInfo.htm?serviceTag=729HH2X'
>>> page=urllib.urlopen(url)
>>> data=page.read()
>>> print data //這個就是json的數據結構,str類型
like {“xx”:“xx”}
>>> type(data)
<type 'str'>
解析json:
>>> import json
>>> ddata=json.read(data)
>>> type(ddata)
<type 'dict'>