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 相关文章推荐
基于wxpython开发的简单gui计算器实例
May 30 Python
对比Python中__getattr__和 __getattribute__获取属性的用法
Jun 21 Python
通过源码分析Python中的切片赋值
May 08 Python
Python使用修饰器执行函数的参数检查功能示例
Sep 26 Python
Python发送http请求解析返回json的实例
Mar 26 Python
详解django的serializer序列化model几种方法
Oct 16 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
Nov 10 Python
python 字符串只保留汉字的方法
Nov 16 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
Dec 18 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
基于plt.title无法显示中文的快速解决
May 16 Python
Python实现批量将文件复制到新的目录中再修改名称
Apr 12 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截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
php Calender(日历)代码分享
2014/01/03 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
PHP面向对象程序设计继承用法简单示例
2018/12/28 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
指定位置如果有图片显示图片,无图片显示广告的JS
2010/06/05 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
JS+CSS3实现的简易钟表效果示例
2019/04/13 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
Vue 实现从小到大的横向滑动效果详解
2019/10/16 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
3分钟学会一个Python小技巧
2018/11/23 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
python手写均值滤波
2020/02/19 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
2020/07/03 Python
饲料采购员岗位职责
2013/12/19 职场文书
说明书范文
2014/05/07 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
销售人员工作自我评价
2014/09/21 职场文书
2015年小学体育工作总结
2015/05/22 职场文书
2019中小学生安全过暑期倡议书
2019/06/24 职场文书
一篇文章告诉你如何实现Vue前端分页和后端分页
2022/02/18 Vue.js