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 相关文章推荐
python读写json文件的简单实现
Apr 11 Python
Python通过Django实现用户注册和邮箱验证功能代码
Dec 11 Python
Django配置celery(非djcelery)执行异步任务和定时任务
Jul 16 Python
Python多继承原理与用法示例
Aug 23 Python
Django 表单模型选择框如何使用分组
May 16 Python
详解Django定时任务模块设计与实践
Jul 24 Python
Python实现网页截图(PyQT5)过程解析
Aug 12 Python
Mac中PyCharm配置Anaconda环境的方法
Mar 04 Python
python 装饰器的使用示例
Oct 10 Python
Jupyter Notebook内使用argparse报错的解决方案
Jun 03 Python
详解如何用Python实现感知器算法
Jun 18 Python
利用Python读取微信朋友圈的多种方法总结
Aug 23 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数据类型之布尔型的介绍
2013/04/28 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
关于JS数组追加数组采用push.apply的问题
2014/06/09 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
纯javascript制作日历控件
2015/07/17 Javascript
剖析Node.js异步编程中的回调与代码设计模式
2016/02/16 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
Bootstrap表单控件学习使用
2017/03/07 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
2019/03/09 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
python 文件查找及内容匹配方法
2018/10/25 Python
python检测IP地址变化并触发事件
2018/12/26 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
使用 Python 清理收藏夹里已失效的网站
2019/12/03 Python
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
Servlet方面面试题
2016/09/28 面试题
Servlet如何得到客户端机器的信息
2014/10/17 面试题
合伙购房协议样本
2014/10/06 职场文书
法人身份证明书
2014/10/08 职场文书
领导班子作风建设剖析材料
2014/10/11 职场文书
付款承诺函范文
2015/01/21 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
教师理论学习心得体会
2016/01/21 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书