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连接mysql调用存储过程示例
Mar 05 Python
python之wxPython应用实例
Sep 28 Python
Python中的getopt函数使用详解
Jul 28 Python
Python编程之event对象的用法实例分析
Mar 23 Python
Python 2.x如何设置命令执行的超时时间实例
Oct 19 Python
python实现爬取图书封面
Jul 05 Python
python程序快速缩进多行代码方法总结
Jun 23 Python
python requests使用socks5的例子
Jul 25 Python
Pycharm如何导入python文件及解决报错问题
May 10 Python
Python flask框架端口失效解决方案
Jun 04 Python
Keras预训练的ImageNet模型实现分类操作
Jul 07 Python
Python爬虫基础之初次使用scrapy爬虫实例
Jun 26 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
7个超级实用的PHP代码片段
2011/07/11 PHP
php 短链接算法收集与分析
2011/12/30 PHP
php数组一对一替换实现代码
2012/08/31 PHP
解析php中获取url与物理路径的总结
2013/06/21 PHP
php curl基本操作详解
2013/07/23 PHP
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
JavaScript delete操作符应用实例
2009/01/13 Javascript
10个新的最有前途的JavaScript框架
2009/03/12 Javascript
jquery中:input和input的区别分析
2011/07/13 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
详解jQuery中关于Ajax的几个常用的函数
2017/07/17 jQuery
浅析JS中常用类型转换及运算符表达式
2017/07/23 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
2019/03/28 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
2020/01/18 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
详解Vue2的diff算法
2021/01/06 Vue.js
Python判断操作系统类型代码分享
2014/11/22 Python
实例讲解Python编程中@property装饰器的用法
2016/06/20 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
python递归函数用法详解
2020/10/26 Python
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
如何转换一个字符串到enum值
2014/04/12 面试题
新郎婚宴答谢词
2014/01/19 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
单方离婚协议书范本2014
2014/10/28 职场文书
法律意见书范文
2015/06/04 职场文书
驻村工作简报
2015/07/20 职场文书
Redis可视化客户端小结
2021/06/10 Redis