如何使用 Python 在 Json 数组中搜索特定值

新手上路,请多包涵

我正在使用网站的 API 来获取信息。它输出 100 个值。

在此数组中搜索特定值的最佳做法是什么?

该数组看起来像这样:

 {
  "success":true,
  "data":
  {
    "array":
    [
      {
        "id":"1","name":"Value1"
      },
      {
        "id":"2","name":"Value2"
      }
    ]
  }
}

我尝试使用我在其他地方找到的这个片段来搜索数据,但是它不起作用:

 for name in (r.json()['data']['array'][0]['name']):
    if r.json()['data']['array'][0] == s_name:
    ident = r.json()['data']['array'][0]['id']
    name = r.json()['data']['array'][0]['name']
    print (name + ' - ' + ident)
else:
    print ('Nothing was found.')

因此,如果我尝试引用 Value1 我将如何使用 Python 来执行此操作?

请注意:我是一名新手开发人员,第一次使用 Json ,对 Python 不是很有经验。

非常感谢所有帮助。

原文由 Zach Long 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 724
2 个回答

不确定那段代码来自哪里,但看起来很不对劲。

只需查看结构,您就可以执行以下操作:

 for attrs in r.json()['data']['array']:
    if attrs['name'] == s_name:
        ident = attrs['id']
        name = attrs['name']
        print(name, '-', ident)
        break
else:
    print('Nothing found!')

原文由 AChampion 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是一个用于搜索的单行示例:

 aaa = {
  "success":True,
  "data":
  {
    "array":
    [
      {
        "id":"1","name":"Value1"
      },
      {
        "id":"2","name":"Value2"
      }
    ]
  }
}

[a['name'] for a in aaa['data']['array'] if a['id']=='1']

这将返回所有找到的案例,如果没有找到,则返回一个空数组

原文由 Roee Anuar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题