如何在python中获取某些名称键的项值?

时间:2014-09-01 10:16:32

标签: python json parsing

我读了对象:

data = json.load(urllib2.urlopen(url))

我有这样的JSON:

     {"state": 
             [{"connected": true, "name": "smtp"}]
              {"connected": true, "name": "emailer"}
              {"connected": true, "name": "mysql"}
              {"connected": true, "name": "mongodb"}
              {"connected": true, "name": "redis"}
              {"state": 
                     [{"connected": true, "name": "mysql"}
                      {"connected": true, "name": "mongodb"}]
                       "connected": true, "name": "vault"}

我应该使用什么来获取具有任何名称的项目的连接状态?例如,“mysql” - “true”。 JSON的结构将来可以更改,这就是为什么我不想使用这样的代码:

print data['state'][0]['connected']

1 个答案:

答案 0 :(得分:0)

如何使用递归函数构建辅助表,方法如下:

def buildConnectionTable(table):
    result = {}

    if type[table] == list:
        subresult = buildConnectionTable(table[0])
        result.update(subresult)

    for key, value in table.items():
        if key == state:
            subresult = buildConnectionTable(value)
            result.update(subresult)
        else:
            result[value["name"]] = value["connected"]

    return result

connection_table = buildConnectionTable(data)

print connection_table["mysql"]
print connection_table["vault"]
print connection_table["redis"]

这可能不是正确的代码,因为我目前无法对其进行测试,但希望它至少能够证明该问题的可能解决方案。