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 isinstance判断对象类型
Sep 06 Python
Python检测生僻字的实现方法
Oct 23 Python
python机器学习实战之最近邻kNN分类器
Dec 20 Python
使用python读取csv文件快速插入数据库的实例
Jun 21 Python
Python中staticmethod和classmethod的作用与区别
Oct 11 Python
python读取文件名并改名字的实例
Jan 07 Python
使用k8s部署Django项目的方法步骤
Jan 14 Python
PyQt5实现简易计算器
May 30 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
Aug 05 Python
利用pandas合并多个excel的方法示例
Oct 10 Python
python tornado修改log输出方式
Nov 18 Python
TensorFlow使用Graph的基本操作的实现
Apr 22 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 裁剪图片成固定大小代码方法
2009/09/09 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
PHP 获取ip地址代码汇总
2015/07/05 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
JS 实现双色表格实现代码
2009/11/24 Javascript
7个JS基础知识总结
2014/03/05 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
Python库urllib与urllib2主要区别分析
2014/07/13 Python
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
Python文本特征抽取与向量化算法学习
2017/12/22 Python
python中logging包的使用总结
2018/02/28 Python
Sanic框架路由用法实例分析
2018/07/16 Python
python实现数据分析与建模
2019/07/11 Python
python实现的分层随机抽样案例
2020/02/25 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
2020/09/29 Python
在Python中实现字典反转案例
2020/12/05 Python
Html5与App的通讯方式详解
2019/10/24 HTML / CSS
Envie de Fraise意大利:法国网上推出的孕妇装品牌
2020/10/18 全球购物
2014组织生活会方案
2014/05/19 职场文书
九一八事变演讲稿
2014/09/05 职场文书
社区综治工作汇报
2014/10/27 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书