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中的map()函数和reduce()函数的用法
Apr 27 Python
python获取目录下所有文件的方法
Jun 01 Python
Python压缩解压缩zip文件及破解zip文件密码的方法
Nov 04 Python
python 获取list特定元素下标的实例讲解
Apr 09 Python
Python使用Phantomjs截屏网页的方法
May 17 Python
对python中list的拷贝与numpy的array的拷贝详解
Jan 29 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
Mar 29 Python
图文详解python安装Scrapy框架步骤
May 20 Python
Flask框架请求钩子与request请求对象用法实例分析
Nov 07 Python
Tensorflow 多线程与多进程数据加载实例
Feb 05 Python
Python tornado上传文件的功能
Mar 26 Python
python process模块的使用简介
May 14 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
使用PHPCMS搭建wap手机网站
2015/09/20 PHP
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
PHP7新特性
2021/03/09 PHP
js 字符串转化成数字的代码
2011/06/29 Javascript
js控制鼠标事件移动及移出效果显示
2014/10/19 Javascript
js选项卡的实现方法
2015/02/09 Javascript
jQuery插件slides实现无缝轮播图特效
2015/04/17 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
关于JavaScript数组你所不知道的3件事
2016/08/24 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
[50:44]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第二场 2月22日
2021/03/11 DOTA
Python translator使用实例
2008/09/06 Python
从零学Python之引用和类属性的初步理解
2014/05/15 Python
有趣的python小程序分享
2017/12/05 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
python 8种必备的gui库
2020/08/27 Python
英国家电直销:Appliances Direct
2016/09/22 全球购物
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
C语言编程练习
2012/04/02 面试题
大龄毕业生求职别忘职业规划
2014/03/11 职场文书
医学生职业生涯规划书范文
2014/03/13 职场文书
mysql中between的边界,范围说明
2021/06/08 MySQL
vue实现Toast组件轻提示
2022/04/10 Vue.js
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android
Java+swing实现抖音上的表白程序详解
2022/06/25 Java/Android