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格式校驗工具。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林站長站的支持。
新聞熱點
疑難解答