JSON - 如果item包含标签,则返回id - Python

时间:2017-05-10 23:10:22

标签: python json

对于我加载的这个json数据。如何为包含“label”的项目返回所有“id”值?

import json
data = json.dumps({"menu": {
    "header": "SVG Viewer",
    "items": [
        {"id": "Open"},
        {"id": "OpenNew", "label": "Open New"},
        {"id": "ZoomIn", "label": "Zoom In"},
        {"id": "ZoomOut", "label": "Zoom Out"},
        {"id": "OriginalView", "label": "Original View"},
        {"id": "Quality"},
        {"id": "Pause"},
        {"id": "Mute"},
        {"id": "Find", "label": "Find..."},
        {"id": "FindAgain", "label": "Find Again"},
        {"id": "Copy"},
        {"id": "CopyAgain", "label": "Copy Again"},
        {"id": "CopySVG", "label": "Copy SVG"},
        {"id": "ViewSVG", "label": "View SVG"},
        {"id": "ViewSource", "label": "View Source"},
        {"id": "SaveAs", "label": "Save As"},
        {"id": "Help"},
        {"id": "About", "label": "About Adobe CVG Viewer..."}
    ]
}})

我可以访问单个元素但是无法创建循环来迭代包含标签的所有id。

这是我个人访问项目的方式。

loadData = json.loads(data)
loadData
items = loadData['menu']['items'][1]
print(items['label'])

2 个答案:

答案 0 :(得分:2)

假设一个静态结构总是有给定的键:

viewDidAppear

会为您提供所有ID的列表...

答案 1 :(得分:0)

迭代loadData['menu']['items']的所有元素并检查是否存在'label'。

代码:

loadData = json.loads(data)
items = loadData['menu']['items']
for item in items:
    if 'label' in item.keys():
        print 'Label Found'