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

附上测试脚本 ,希望有人在不同机子上测试结果帖上来。。。
[python] view
plain
copy

  1. #coding:utf8
  2. import timeit
  3. import json
  4. import minjson
  5. import simplejson
  6. js_obj = '''''  ["我是中文",
  7. {
  8. "bar":["测试阿", null, 1.0, 2], "bool":true
  9. }]'''
  10. py_obj= [u"我是中文",
  11. {
  12. ], "bool":True
  13. }]
  14. def test_minjson():
  15. minjson.read(js_obj)  #可注释其中一句,单测读/写
  16. minjson.write(py_obj)
  17. def test_json():
  18. json.read(js_obj)  #可注释其中一句,单测读/写
  19. json.write(py_obj)
  20. def test_smpjson():
  21. simplejson.loads(js_obj)
  22. simplejson.dumps(py_obj)
  23. if __name__=='__main__':
  24. from timeit import Timer
  25. t = Timer("test_minjson()", "from __main__ import test_minjson")
  26. ) # 默认number = 100万次
  27. t = Timer("test_json()", "from __main__ import test_json")
  28. ) # 默认number = 100万次
  29. t = Timer("test_smpjson()", "from __main__ import test_smpjson")
  30. ) # 默认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'>

 
 

python安装json的方法;以及三种json库的区别的更多相关文章

  1. python每次处理一个字符的三种方法

    python每次处理一个字符的三种方法 a_string = "abccdea" print 'the first' for c in a_string: print ord(c) ...

  2. 三、用Delphi10.3 创建一条JSON数据的第三种方法,非常简洁的写法

    一.用Delphi10.3构造一个JSON数据的第三种方法,并格式化输出,代码如下: uses // System.JSON, System.JSON.Types, System.JSON.Write ...

  3. python对mysql数据库操作的三种不同方式

    首先要说一下,在这个暑期如果没有什么特殊情况,我打算用python尝试写一个考试系统,希望能在下学期的python课程实际使用,并且尽量在此之前把用到的相关技术都以分篇博客的方式分享出来,有想要交流的 ...

  4. 判断python对象是否可调用的三种方式及其区别

    查找资料,基本上判断python对象是否为可调用的函数,有三种方法 使用内置的callable函数 callable(func) 用于检查对象是否可调用,返回True也可能调用失败,但是返回False ...

  5. 命令行运行Python脚本时传入参数的三种方式

    原文链接:命令行运行Python脚本时传入参数的三种方式(原文的几处错误在此已纠正) 如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式. pyth ...

  6. (转)VMware虚拟机三种网络模式的区别及配置方法;

    我的一点实际经验理解桥接和NAT 桥接是虚拟机完全作为一个独立的地址接在局域网中,NAT是虚拟机依赖宿主主机地址转换的一种方式 例子我的虚拟机如果用桥接模式,连接外部网站如百度时会提示此pc没有装公司 ...

  7. uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式

    前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官 ...

  8. js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式

    js replace 全局替换   js 的replace 默认替换只替换第一个匹配的字符,如果字符串有超过两个以上的对应字符就无法进行替换,这时候就要进行一点操作,进行全部替换. <scrip ...

  9. List的remove()方法的三种正确打开方式

    转: java编程:List的remove()方法的三种正确打开方式! 2018年08月12日 16:26:13 Aries9986 阅读数 2728更多 分类专栏: leetcode刷题   版权声 ...

  10. xpath beautiful pyquery三种解析库

    这两天看了一下python常用的三种解析库,写篇随笔,整理一下思路.太菜了,若有错误的地方,欢迎大家随时指正.......(conme on.......) 爬取网页数据一般会经过 获取信息-> ...

随机推荐

  1. Flume 读取RabbitMq消息队列消息,并将消息写入kafka

    首先是关于flume的基础介绍 组件名称 功能介绍 Agent代理 使用JVM 运行Flume.每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks. Client ...

  2. E1

    en表"使怎么样" engage 吸引,从事,订婚    be engaged in doing sth.  忙于 endure  忍耐,忍受 enforce 强制执行 enrol ...

  3. IDEA中Git的使用

    工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程Git仓库上获取项目源码 场景三:小 ...

  4. Dynamics CRM Trigger plugin for N:N relationships

    博客原文:https://demystifyingcrm.wordpress.com/2014/12/17/trigger-plugin-for-nn-relationships-in-dynamic ...

  5. norflash芯片内执行(XIP)

    为什么程序不能直接在nandflash上执行?出于这个疑惑带来了这篇博文,是我在网上找了很多资料后总结的,假如有误,希望马上指出来,免得我误人子弟.谢谢! nandflash和norflash NOR ...

  6. Redis集群功能预览

    目前Redis Cluster仍处于Beta版本,Redis 3.0将会加入,在此可以先对其主要功能和原理进行一个预览.参考<Redis Cluster - a pragmatic approa ...

  7. Linux 高性能服务器编程——多进程编程

    问题聚焦:     进程是Linux操作系统环境的基础.     本篇讨论以下几个内容,同时也是面试经常被问到的一些问题:     1 复制进程映像的fork系统调用和替换进程映像的exec系列系统调 ...

  8. Java进阶(四十五)java 字节流与字符流的区别

    java 字节流与字符流的区别(转载)   字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?   实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作 ...

  9. JAVA面向对象-----instanceof 关键字

    instanceof 关键字 1:快速演示instanceof Person p=new Person(); System.out.println( p instanceof Person); 2:i ...

  10. 用Maven打包成EAR部署JBoss

    基于原理的架构里面,考虑这次升级版本,可谓是一步一个脚印的向上走啊,可以说步步为坎,别人的知识,和自己的知识,相差很多啊,什么都懂点,但是具体没有使用,就理解不深刻了,心有余而力不足,所以一切我们自己 ...