2014-09-01 106 views
0

我阅读对象:如何获取python中某个名称键的项目值?

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'] 

回答

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"] 

这可能是不正确的代码,因为我目前无法测试它,但希望它至少能够演示解决此问题的可能方案。