迭代JSON对象以检查某些条目是否已存在

时间:2017-04-14 15:59:26

标签: python json

我正在尝试遍历JSON对象以检查某些条目是否已存在。 我的JSON对象就像这样

IN

我需要迭代它并检索标题以检查它是否与我将添加到此对象的条目匹配,以防它尚不存在

我正在使用请求来生成此对象

[
  {
    "title": "scname",
    "html": "<div><iframe src=/scenario/test3dxblock.0/ width=\"400\" height=\"500\"></iframe></div>",
    "description": "desc",
    "status": "417"
},
{
    "title": "test3dxblock.0",
    "html": "<div><iframe src=/scenario/test3dxblock.0/ width=\"400\" height=\"500\"></iframe></div>",
    "description": "desc",
    "status": "417"
},
{
    "title": "filethumbs.0",
    "html": "<div><iframe src=/scenario/filethumbs.0/ width=\"400\" height=\"500\"></iframe></div>",
    "description": "desc",
    "status": "417"
} 

]

我找到了一些答案,但似乎没有任何工作,我该怎么做?感谢

1 个答案:

答案 0 :(得分:-1)

我会将JSON数据放入名为json_stringjson_data而非json的内容中,因此您不会混淆/混淆名称json

我假设您显示的数据是json变量中的字符串格式。我将数据作为多行文本复制到变量中,但我必须将backslash-double quote更改为字符串中的单引号。我不知道你是否需要这样做才能让json.loads()处理你的数据,但如果是这样,那么当你需要提取HTML时,你可以将单引号转换回双引号。然后我把它送进了json包,它创建了一个字典列表。然后,您可以使用列表推导从中提取标题。

import json

json_string = """[
  {
    "title": "scname",
    "html": "<div><iframe src=/scenario/test3dxblock.0/ width='400' height='500'></iframe></div>",
    "description": "desc",
    "status": "417"
},
{
    "title": "test3dxblock.0",
    "html": "<div><iframe src=/scenario/test3dxblock.0/ width='400' height='500'></iframe></div>",
    "description": "desc",
    "status": "417"
},
{
    "title": "filethumbs.0",
    "html": "<div><iframe src=/scenario/filethumbs.0/ width='400' height='500'></iframe></div>",
    "description": "desc",
    "status": "417"
}
]"""

json_data = json.loads(json_string)
titles = [item['title'] for item in json_data]

当它粘贴到REPL中时,标题包含:

['scname', 'test3dxblock.0', 'filethumbs.0']

如果您显示json的变量实际上已经是一个列表,那么您只需要使用列表推导来获取标题。如果您想要查看列表title中的新titles,则可以说:

if title in titles:
    # do whatever with it
else:
    # add it to list - or whatever