自信,努力,坚持

python json问题一.二

上一篇 / 下一篇  2011-07-27 15:53:34 / 个人分类:python

何为JSON,举个例子:
{"start": 0, "total": 4,
 "data": [
{"name": "AUTOEXEC.BAT", "visitTime": 1294499717374, "ext": "bat", "mode": 33279, "modifyTime": 1294499717374, "path": "c:\\AUTOEXEC.BAT", "type": "file", "createTime": 1294499717374, "dir": "c:\\", "size": 0},
{"name": "bootlog.txt", "visitTime": 1307954317843, "ext": "txt", "mode": 33206, "modifyTime": 1307954317843, "path": "c:\\bootlog.txt", "type": "file", "createTime": 1307954317843, "dir": "c:\\", "size": 330},
{"name": "detlog.txt", "visitTime": 1307954317843, "ext": "txt", "mode": 33206, "modifyTime": 1307954317843, "path": "c:\\detlog.txt", "type": "file", "createTime": 1307954317843, "dir": "c:\\", "size": 370},
{"name": "git_shell_ext_debug.txt", "visitTime": 1307953305015, "ext": "txt", "mode": 33206, "modifyTime": 1310367644343, "path": "c:\\git_shell_ext_debug.txt", "type": "file", "createTime": 1307953305015, "dir": "c:\\", "size": 282963}],
"pageSize": -1}

以上这一串就是JSON格式的字符串了,感觉很象python里的字典对吧,仔细观察,注意里面的{}各内容。
看了网上说明方法解析,发现import json  里面没有read的方法,之前也没用过就乱试,最后发现有个loads()方法可以用,之后网上查找资料才知道原来我用的是python 2.6自带的是smiplejson,而read是json-py里的方法。
以上字符串在loads时提示“Invalid \escape。。。。”错误,原因为字符串中有转义字符"\",去了就可以了,可是如果人家给我的就是这么一个字符串,我然不成还要去改里面的字符串再传给LOADS吗,不确定JSON里不否就不能"\"这么用呢?待解。。。
http://stackoverflow.com/questions/4296041/simplejson-loads-get-invalid-escape-x

以下为网上博文:http://blog.csdn.net/toontong/article/details/4979572
最近发现json解释时,不同人,用同个json库写的代码不一样(所调方法函数不一致,不同用法会出现代码不兼容)。
特地去查了下资料,做了个比较。结果如下:
------------------------------------------------------------------------------------------------------------------------
python中的json解释库有好几个,其中不同版本有使用上的差异。
常用有 json-py 与smiplejson 两个包
其中json-py 包含一个minjson,用法一样,只是import时 是 import minjson
两个用法上有差别, 但import语句一样,
import json   # 都是如此import的。
import minjson
 # json-py库用法
json.read( js_obj )
json.write(py_obj)
#json的minjson用法 
minjson.read( js_obj )
minjson.write(py_obj)
# smiplejson  的用法
json.loads(js_obj)   
json.dumps(py_obj)

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只有一个文件,建议直接复制到工程公共库目录下,直接使用,免去安装痛苦。

附上测试脚本 ,希望有人在不同机子上测试结果帖上来。。。




TAG:

 

评分:0

我来说两句

Open Toolbar