Python - 搜索JSON

时间:2016-07-13 09:35:35

标签: python json

我有JSON输出如下:

{
"service": [{
    "name": ["Production"],
    "id": ["256212"]
}, {
    "name": ["Non-Production"],
    "id": ["256213"]
}]
}

我希望找到所有ID包含"非生产"作为一个名字。

我正在考虑运行循环来检查,如下所示:

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


for key, value in data.iteritems():

if "Non-Production" in key[value]: print key[value]

但是,我似乎无法从"服务"获取名称和ID。树,它返回:

   if "Non-Production" in key[value]: print key[value]
   TypeError: string indices must be integers

假设:

  • JSON采用固定格式,无法更改
  • 我没有root访问权限,也无法安装任何其他软件包

基本上,我们的目标是获得一份非生产和服务的ID列表。以最佳方式。

2 个答案:

答案 0 :(得分:1)

你走了:

data = {
    "service": [
        {"name": ["Production"],
         "id": ["256212"]
        },
        {"name": ["Non-Production"],
         "id": ["256213"]}
    ]
}

for item in data["service"]:
    if "Non-Production" in item["name"]:
        print(item["id"])

答案 1 :(得分:0)

无论我看到JSON,我都会想到功能编程!还有谁 ?! 我认为如果你使用concat或flat,filter和reduce等函数,这是一个更好的主意。

鸡蛋内衬:

[s.get('id', [0])[0] for s in filter(lambda srv : "Non-Production" not in srv.get('name', []), data.get('service', {}))]

编辑:

我更新了代码,即使data = {},结果将是[]空ID列表。