编写一个使用python解析json字典的循环

时间:2015-07-16 04:43:35

标签: python json api parsing dictionary

我是初学程序员,我一直在尝试从API GET请求解析json输出文件,以便提取经度和纬度坐标。

JSON文件看起来像this

JSON输入文件是here

我的解析json文件的代码目前如下所示:

ourResult = js['transactions'][0]['meta']

for majorkey, subdict in ourResult.iteritems():
     print majorkey
for subkey, value in subdict.iteritems():
     print subkey, value

然而,这只是返回'location'键中的一组值,而我正试图进一步提升'lon'和'lat'值。

知道我应该使用什么代码吗?

1 个答案:

答案 0 :(得分:0)

据我了解你的问题,你需要这样的话:

js = json.loads(response.content)
ourResult = js['transactions'][0]['meta']

for majorkey, subdict in ourResult.iteritems():
     print majorkey
     if type(subdict) == dict:
         for subkey, value in subdict.iteritems():
             print subkey, value

您可以使用代码

打印任意深度的dict
def print_dict_rec( indict ):
    for majorkey, subdict in indict.iteritems():
         if type(subdict) == dict:
            print majorkey
            print_dict_rec(subdict)
         else:
            print majorkey, subdict

print_dict_rec(ourResult)

用于提取键的所有值的代码' lat'和' lon':

def get_values_json( js, res ):
    if type(js) == list:
        for e in js:
            get_values_json(e, res)
    elif type(js) == dict:
        for k,v in js.iteritems():
            if type(v) ==  dict or type(v) == list:
                get_values_json(v, res)
            else:
                if k == 'lat' or k == 'lon':
                    res[k].append(v)

res = {'lat':[], 'lon':[]}
get_values_json(js, res)
print res