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装饰器decorator介绍
Nov 21 Python
Python实现从脚本里运行scrapy的方法
Apr 07 Python
深入解析Python编程中super关键字的用法
Jun 24 Python
利用Python如何生成hash值示例详解
Dec 20 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
Dec 15 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
Python提取频域特征知识点浅析
Mar 04 Python
一步步教你用python的scrapy编写一个爬虫
Apr 17 Python
Python笔试面试题小结
Sep 07 Python
解决Python二维数组赋值问题
Nov 28 Python
pytorch 指定gpu训练与多gpu并行训练示例
Dec 31 Python
如何使用pandas读取txt文件中指定的列(有无标题)
Mar 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
在数据量大(超过10万)的情况下
2007/01/15 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
2019/05/06 PHP
js获取IP和PcName(IE)在vs中可用
2013/08/02 Javascript
jquery限定文本框只能输入数字即整数和小数
2013/11/29 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
JS小游戏之象棋暗棋源码详解
2014/09/25 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
[00:52]黑暗之门更新 新英雄孽主驾临DOTA2
2016/08/24 DOTA
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
2016/06/02 Python
Django中的CBV和FBV示例介绍
2018/02/25 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
python pygame实现2048游戏
2018/11/20 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
python的列表List求均值和中位数实例
2020/03/03 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
员工评语大全
2014/01/19 职场文书
大学辅导员事迹材料
2014/02/05 职场文书
团队拓展活动方案
2014/08/28 职场文书
教师国庆节演讲稿范文2014
2014/09/21 职场文书
关于运动会的广播稿
2015/08/19 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js