Python json模块使用实例


Posted in Python onApril 11, 2015

实际上JSON就是Python字典的字符串表示,但是字典作为一个复杂对象是无法直接传递,所以需要将其转换成字符串形式.转换的过程也是一种序列化过程.

用json.dumps序列化为json字符串格式

>>> import json

>>> dic {'Connection': ['keep-alive'], 'Host': ['127.0.0.1:5000'], 'Cache-Control': ['max-age=0']}

>>> jdict = json.dumps({'Connection': ['keep-alive'], 'Host': ['127.0.0.1:5000'], 'Cache-Control': ['max-age=0']})

>>> print jdict

{"Connection": ["keep-alive"], "Host": ["127.0.0.1:5000"], "Cache-Control": ["max-age=0"]}

虽然dic和jdict打印的字符串是相同的,但是实际它们的类型是不一样的.dic是字典类型,jdict是字符串类型
<type 'dict'>

>>> type(jdic)

>>> type(jdict)

<type 'str'>

可以用json.dumps序列化列表为json字符串格式
>>> list = [1, 4, 3, 2, 5] 

>>> jlist = json.dumps(list)

>>> print jlist

[1, 4, 3, 2, 5]

list和jlist类型同样是不一样的
>>> type(list)

<type 'list'>

>>> type(jlist)

<type 'str'>

json.dumps有如下多种参数

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)

key排序
>>> print json.dumps({1:'a', 4:'b', 3:'c', 2:'d', 5:'f'},sort_keys=True)

{"1": "a", "2": "d", "3": "c", "4": "b", "5": "f"}

格式对齐

>>> print json.dumps({'4': 5, '6': 7}, sort_keys=True, indent=4)

{

    "4": 5, 

    "6": 7

}

指定分隔符
>>> json.dumps([1,2,3,{'4': 5, '6': 7}], separators=(',',':'))

'[1,2,3,{"4":5,"6":7}]'

用json.dump序列化到文件对象中
>>> json.dump({'4': 5, '6': 7}, open('savejson.txt', 'w'))

>>> print open('savejson.txt').readlines()

['{"4": 5, "6": 7}']

json.dump参数和json.dumps类似

json.dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)

json.loads把json字符串反序列化为python对象

函数签名为:

json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

注意这里的”s”必须是字符串,反序列化后为unicode字符
>>> dobj = json.loads('{"name":"aaa", "age":18}')

>>> type(dobj)

<type 'dict'>

>>> print dobj

{u'age': 18, u'name': u'aaa'}

json.load从文件中反序列化为python对象

签名为:

json.load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

实例:
>>> fobj = json.load(open('savejson.txt'))

>>> print fobj

{u'4': 5, u'6': 7}

>>> type(fobj)

<type 'dict'>
Python 相关文章推荐
Python ZipFile模块详解
Nov 01 Python
举例讲解Python编程中对线程锁的使用
Jul 12 Python
基于python socketserver框架全面解析
Sep 21 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
May 19 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
Oct 11 Python
Python如何获得百度统计API的数据并发送邮件示例代码
Jan 27 Python
react+django清除浏览器缓存的几种方法小结
Jul 17 Python
Django实现分页显示效果
Oct 31 Python
Python新手学习装饰器
Jun 04 Python
基于opencv实现简单画板功能
Aug 02 Python
python 如何快速复制序列
Sep 07 Python
详解Django中异步任务之django-celery
Nov 05 Python
Python进程通信之匿名管道实例讲解
Apr 11 #Python
Python multiprocessing模块中的Pipe管道使用实例
Apr 11 #Python
Python httplib模块使用实例
Apr 11 #Python
初步探究Python程序的执行原理
Apr 11 #Python
Python与shell的3种交互方式介绍
Apr 11 #Python
Python函数参数类型*、**的区别
Apr 11 #Python
Python中的多重装饰器
Apr 11 #Python
You might like
php 字符串压缩方法比较示例
2014/01/23 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
PHP利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
JavaScript中的Document文档对象
2008/01/16 Javascript
在vs2010中调试javascript代码方法
2011/02/11 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
nodejs个人博客开发第四步 数据模型
2017/04/12 NodeJs
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
原生javascript实现分页效果
2017/04/21 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
2018/07/13 Javascript
JS随机密码生成算法
2019/09/23 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
Vue3不支持Filters过滤器的问题
2020/09/24 Javascript
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
python通过函数属性实现全局变量的方法
2015/05/16 Python
python装饰器初探(推荐)
2016/07/21 Python
python实现redis三种cas事务操作
2017/12/19 Python
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
python样条插值的实现代码
2018/12/17 Python
Python 抓取微信公众号账号信息的方法
2019/06/14 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
"引用"与多态的关系
2013/02/01 面试题
个人承诺书
2014/03/26 职场文书
教师党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
学校党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2014年老干部工作总结
2014/11/21 职场文书
同学聚会邀请函
2015/01/30 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang