python中字符串类型json操作的注意事项


Posted in Python onMay 02, 2017

python操作json的方法有

json.dumps——将json对象(字典)转换为字符串对象

json.loads——将字符串对象转换为json对象(字典)

如果定义json对象

jsonstring1={"results":[{"id":"1","name":"\u9ed8\u8ba4\u5206\u7ec4","policy":"4","timer_scan_setting":"{\"last\":\"10.29.13\",\"setting\":\"fulldisk\",\"type\":\"day\",\"hour\":\"13\"}"},
{"id":"2","name":"\u6d4b\u8bd5\u7684","policy":"1","timer_scan_setting":"{\"last\":\"10.29.15\",\"setting\":\"fulldisk\",\"type\":\"day\",\"hour\":\"15\"}"},{"id":"4","name":"\u4ea7\u54c1\u7ec4","policy":"3","timer_scan_setting":"{\"last\":\"10.8.15\",\"setting\":\"disable\"}"}]}

可以直接按json操作,比如

print jsonstring1.keys()
print jsonstring1['results'][0]['policy']

也可以转个360度再操作

jsonstring1=json.dumps(jsonstring1)
jsonstring1=json.loads(jsonstring1)
print jsonstring1.keys()
print jsonstring1['results'][0]['policy']

但是如果定义字符串对象就要小心了

jsonstring2='''{"results":[{"id":"1","name":"\u9ed8\u8ba4\u5206\u7ec4","policy":"4","timer_scan_setting":"{\"last\":\"10.29.13\",\"setting\":\"fulldisk\",\"type\":\"day\",\"hour\":\"13\"}"},
{"id":"2","name":"\u6d4b\u8bd5\u7684","policy":"1","timer_scan_setting":"{\"last\":\"10.29.15\",\"setting\":\"fulldisk\",\"type\":\"day\",\"hour\":\"15\"}"},{"id":"4","name":"\u4ea7\u54c1\u7ec4","policy":"3","timer_scan_setting":"{\"last\":\"10.8.15\",\"setting\":\"disable\"}"}]}'''

这个只是对上面的json对象加了三引号转为一个字符串,所以理论上可以直接loads之后就按json操作

json.loads(jsonstring2)

但是实际却报错了,原因是因为大括号前后的双引号没有去掉,网上很多在线的json格式化工具对于这些双引号不会报错,但是python会,而定义json对象时加了双引号操作却没报错,是因为不加里面的内容会被转义,所以千万不能完全相信网上的json格式校验工具。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Perl中著名的Schwartzian转换问题解决实现
Jun 02 Python
给你选择Python语言实现机器学习算法的三大理由
Nov 15 Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 Python
Python错误处理操作示例
Jul 18 Python
解决win64 Python下安装PIL出错问题(图解)
Sep 03 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
Aug 17 Python
selenium+PhantomJS爬取豆瓣读书
Aug 26 Python
python 上下文管理器及自定义原理解析
Nov 19 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
python的Jenkins接口调用方式
May 12 Python
python3.9.1环境安装的方法(图文)
Feb 02 Python
Python实现曲线拟合的最小二乘法
Feb 19 Python
python实现逻辑回归的方法示例
May 02 #Python
pycharm中连接mysql数据库的步骤详解
May 02 #Python
Python多线程实现同步的四种方式
May 02 #Python
Python之Web框架Django项目搭建全过程
May 02 #Python
python3实现抓取网页资源的 N 种方法
May 02 #Python
Pycharm学习教程(2) 代码风格
May 02 #Python
Pycharm学习教程(1) 定制外观
May 02 #Python
You might like
php学习笔记 类的声明与对象实例化
2011/06/13 PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
2015/05/12 PHP
PHP AjaxForm提交图片上传并显示图片源码
2016/11/29 PHP
风吟的小型JavaScirpt库 (FY.JS).
2010/03/09 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
用JS控制回车事件的代码
2011/02/20 Javascript
jQuery :nth-child前有无空格的区别分析
2011/07/11 Javascript
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
jqGrid中文文档之选项设置
2015/12/02 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
javascript使用canvas实现饼状图效果
2020/09/08 Javascript
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
Python和php通信乱码问题解决方法
2014/04/15 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
Python Django 命名空间模式的实现
2019/08/09 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
美国便宜的横幅和标志印刷在线:Best of Signs
2019/05/29 全球购物
团员的自我评价
2013/12/01 职场文书
餐饮业创业计划书范文
2014/01/06 职场文书
自我鉴定四大框架
2014/01/17 职场文书
企业形象策划方案
2014/05/29 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
舞出我人生观后感
2015/06/16 职场文书
Python中threading库实现线程锁与释放锁
2021/05/17 Python