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常规方法实现数组的全排列
Mar 17 Python
Python中文分词实现方法(安装pymmseg)
Jun 14 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
Jul 11 Python
你应该知道的python列表去重方法
Jan 17 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
不可错过的十本Python好书
Jul 06 Python
详解Python中正则匹配TAB及空格的小技巧
Jul 26 Python
Django中的session用法详解
Mar 09 Python
pytorch查看通道数 维数 尺寸大小方式
May 26 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
Jun 02 Python
浅谈Python 钉钉报警必备知识系统讲解
Aug 17 Python
python实现进度条的多种实现
Apr 29 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中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
jquery 定位input元素的几种方法小结
2013/07/28 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
node.js基于mongodb的搜索分页示例
2017/01/22 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
webpack4 升级迁移的实现
2018/09/12 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
2018/09/27 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
jQuery HTML css()方法与css类实例详解
2020/05/20 jQuery
python3中int(整型)的使用教程
2017/03/23 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
详解Python中的type和object
2018/08/15 Python
python中的json总结
2018/10/11 Python
python如何设置静态变量
2020/09/07 Python
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
比较基础的php面试题及答案-编程题
2012/10/14 面试题
北京天润融通.net面试题笔试题
2012/02/20 面试题
英文版餐饮运营管理求职信
2013/11/06 职场文书
保护环境建议书
2014/03/12 职场文书
法人授权委托书范本
2014/09/17 职场文书
护士岗位竞聘书
2015/09/15 职场文书
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL
用Java实现简单计算器功能
2021/07/21 Java/Android
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技
Python IO文件管理的具体使用
2022/03/20 Python