这里有新鲜出炉的 Python3 官方中文指南,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
这篇文章主要给大家介绍了 python 中字符串类型 json 操作的一些注意事项,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
python 操作 json 的方法有
——将 json 对象(字典)转换为字符串对象
- json.dumps
——将字符串对象转换为 json 对象(字典)
- json.loads
如果定义 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 格式校验工具。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对 PHPERZ 的支持。
来源: http://www.phperz.com/article/17/0521/334831.html