检查json中一个键的值是否有另一个键

时间:2017-10-31 14:23:28

标签: python json python-2.x

我正在尝试打印我的json内容。我知道如何只打印键和值,但我也希望能够访问键中的对象。这是我的代码:

json_mini = json.loads('{"one" : {"testing" : 39, "this": 17}, "two" : "2", "three" : "3"}')
for index, value in json_mini.items():
    print index, value
    if value.items():
        for ind2, val2 in value.items():
            print ind2, val2

这给了我这个错误:AttributeError: 'unicode' object has no attribute 'items'

如何迭代它?所以我可以对每个单独的键和值进行一些处理吗?

2 个答案:

答案 0 :(得分:2)

递归示例:

import json


def func(data):
    for index, value in data.items():
        print index, value
        if isinstance(value, dict):
            func(value)


json_mini = json.loads('{"one" : {"testing" : 39, "this": 17}, "two" : "2", "three" : "3"}')
func(json_mini)

答案 1 :(得分:1)

这是一种在Python 2和3中有效的递归方式,它不使用isinstance()。它使用异常来确定给定元素是否是子对象。

import json

def func(obj, name=''):
    try:
        for key, value in obj.items():
            func(value, key)
    except AttributeError:
        print('{}: {}'.format(name, obj))

json_mini = json.loads('''{
                              "three": "3",
                              "two": "2",
                              "one": {
                                  "this": 17,
                                  "testing": 39
                              }
                          }''')

func(json_mini)

输出:

this: 17
testing: 39
three: 3
two: 2