python解析json
'''写了个解析json的小函数
此函数用来遍历json串里边的每个key和alue
如果value仍然是json的话,会继续对其进行遍历,并且增加层深,便于展示
试用了递归的形式实现这个函数
输出结果如下:
'''
#!coding:utf-8
#导入json模块,你也可以用simplejson,一个第三模块,比较好用
import json
#定义一个dict对象,并有些value还是以json的形式出现,形式如下
adict={"xiaoqiangk":"xiaoqiangv","xiaofeik":"xiaofeiv","xiaofeis":{"xiaofeifk":"xiaofeifv","xiaofeimk":{"xiaoqik":"xiaoqiv","xiaogou":{"xiaolei":"xiaolei"}}},"xiaoer":{"xiaoyuk":"xiaoyuv"}}
#定义一个函数,用来处理json,传入json1对象,层深初始为0,对其进行遍历
def hJson(json1,i=0):
adict={"xiaoqiangk":"xiaoqiangv","xiaofeik":"xiaofeiv","xiaofeis":{"xiaofeifk":"xiaofeifv","xiaofeimk":{"xiaoqik":"xiaoqiv","xiaogou":{"xiaolei":"xiaolei"}}},"xiaoer":{"xiaoyuk":"xiaoyuv"}}
#定义一个函数,用来处理json,传入json1对象,层深初始为0,对其进行遍历
def hJson(json1,i=0):
#判断传入的是否是json对象,不是json对象就返回异常
if(isinstance(json1,dict)):
#遍历json1对象里边的每个元素
for item in json1:
for item in json1:
#如果item对应的value还是json对象,就调用这个函数进行递归,并且层深i加1,如果不是,直接z在else处进行打印
if (isinstance(json1[item],dict)):
if (isinstance(json1[item],dict)):
#打印item和其对应的value
print("****"*i+"%s : %s"%(item,json1[item]))
print("****"*i+"%s : %s"%(item,json1[item]))
#调用函数进行递归,i加1
hJson(json1[item],i=i+1)
else:
hJson(json1[item],i=i+1)
else:
#打印
print("****"*i+"%s : %s"%(item,json1[item]))
#程序入口,对adict进行处理,第二个参数可以不传
print("****"*i+"%s : %s"%(item,json1[item]))
#程序入口,对adict进行处理,第二个参数可以不传
esle:
print("json1 is not josn object!")
hJson(adict,0)