【问题标题】:Trying to parse value from json response in python尝试从python中的json响应解析值
【发布时间】:2026-01-24 03:10:01
【问题描述】:

我正在尝试解析字典中的特定值。该字典是来自 API 查询的 json 有效负载。我尝试了很多方法,但我无法得到我想要的。

我的目标是:

  1. 通过现有名称列表进行解析。我有一个从文件导入的空白字典。
  2. 根据 API 响应查看该名称是否处于活动状态。
  3. 打印活动用户列表:如果用户处于活动状态,则打印(“用户:%s 处于活动状态”% 用户)
  4. 然后打印非活动用户列表:else print ("User: %s is not Active" % user)

获取我拥有的值:

#!/usr/bin/env python

import requests
from requests.auth import HTTPBasicAuth
import json
import sys
import getpass

password = getpass.getpass()
url = "https://myurl/blah/blah/getusers=true"
request = requests.get(url,auth=HTTPBasicAuth('username', password.format(password)), verify=True)

if(request.ok):
    data = json.loads(request.content)
    for key in data:
        users = data[key]
        print users
else:
  request.raise_for_status()

返回的内容:

https://myurl/blah/blah/getusers=true
getusers
users{u'max-results': 50, u'items': [{u'displayName': u'testfirstname, testlastname', u'name': u'testfirstname', u'self': u'https://blah/blah',               u'emailAddress': u'myemail@email.com', u'key': u'myusername', u'active': True, u'timeZone': u'America/Los_Angeles'},

如果只是因为我无法找到要获取哪个密钥或什么,我不会。响应中的关键是:u'active': True。我试图拉出“活动”值,但无济于事。任何帮助,将不胜感激。

编辑:更多信息。因此,有效负载返回一个用户列表,其中包含每个用户的数据。 “active: True”只是系统中定义用户的参数之一。我想获取我已经拥有的用户列表并检查 API 以查看列表中的每个用户是“活动:True”还是“活动:False”。 我不确定为什么会返回前两行(url 和 getusers)

【问题讨论】:

  • json.loads() 会给你一个嵌套字典。检查多个级别的键以找到您想要的。我需要一个更具体的问题才能说更多 - 事实上,我真的不知道你在寻找什么,或者你的数据是什么样的。
  • 打印输出中的字典输出,实际上是什么?这就是全部反应吗?你有 3 行输出,但只有一个 print,我不确定我们在看什么。

标签: python json


【解决方案1】:

在我看来,您想要的一切都在 json 的项目级别内。试试这样的:

data = json.loads(request.content)
items = data['items']
active=[]
inactive=[]
for i in range(len(items)):
    user = items[i]
    if user['active']:
        active.append(user)
    else:
        inactive.append(user)

【讨论】:

  • 这得到了我想要的,谢谢。我只需要弄清楚如何比较这两个词典。当我尝试使用 print active.items() 打印列表时,出现错误。