Python 解析这个JSON输出时,我遗漏了什么

Python 解析这个JSON输出时,我遗漏了什么,python,json,Python,Json,当我试图用Python解析这个JSON输出时,我遗漏了什么?JSON如下所示: { "start": 0, "terms": [ "process_name:egagent.exe" ], "highlights": [], "total_results": 448, "filtered": {}, "facets": {}, "results": [ { "username": "SYSTEM", "alert_t

当我试图用Python解析这个JSON输出时,我遗漏了什么?JSON如下所示:

    {
  "start": 0,
  "terms": [
    "process_name:egagent.exe"
  ],
  "highlights": [],
  "total_results": 448,
  "filtered": {},
  "facets": {},
  "results": [
    {
      "username": "SYSTEM",
      "alert_type": "test"
    },
    {
      "username": "SYSTEM2",
      "alert_type": "test"
    }
   ]
  }
for result in readable["results"]:
     print (result["username"])
我尝试使用的Python很简单。我想获取用户名,但我尝试的每件事都会抛出一个错误。当它没有抛出错误时,我似乎得到了每个错误的字母。因此,如果我这样做:

apirequest = requests.get(requesturl, headers=headers, verify=False)
readable = json.loads(apirequest.content)

#print readable
for i in readable:
    print (i[0])

我得到s,t,h,t,f,f,r,它们是每个项目的第一个字母。如果我尝试I[1],我会得到每个项目的第二个字母。当我尝试按名称(例如I[“start”])时,我得到一个错误,即字符串索引必须是整数。我很困惑,而且我是Python新手,但我还没有在这方面找到任何东西。请帮忙!我只想访问username字段,这就是我尝试执行for循环的原因。提前谢谢

如果
readable
是您的JSON对象(
dict
),您可以像在每个映射中一样使用它们的键访问元素

readable["results"][0]["username"]
应该给您
“SYSTEM”
字符串作为结果

要打印每个用户名,请执行以下操作:

for result in readable["results"]:
    print(result["username"])
如果您的JSON是一个
str
对象,您必须这样做。

尝试以下方法:

for i in readable["results"]:
    print i["username"]
加载json字符串:

import json

s = """
{
  "start": 0,
  "terms": [
    "process_name:egagent.exe"
  ],
  "highlights": [],
  "total_results": 448,
  "filtered": {},
  "facets": {},
  "results": [
    {
      "username": "SYSTEM",
      "alert_type": "test"
    },
    {
      "username": "SYSTEM2",
      "alert_type": "test"
    }
   ]
}
"""
并为每个结果打印用户名:

print [res['username'] for res in json.loads(s)['results']]
输出:

[u'SYSTEM', u'SYSTEM2']

for i in readable
将通过
readable
字典中的每个键迭代
i
。如果然后打印
i[0]
,则打印每个键的第一个字符

如果您希望在与
“results”
键相关联的列表条目中包含与
“username”
键相关联的值,您可以这样获得它们:

    {
  "start": 0,
  "terms": [
    "process_name:egagent.exe"
  ],
  "highlights": [],
  "total_results": 448,
  "filtered": {},
  "facets": {},
  "results": [
    {
      "username": "SYSTEM",
      "alert_type": "test"
    },
    {
      "username": "SYSTEM2",
      "alert_type": "test"
    }
   ]
  }
for result in readable["results"]:
     print (result["username"])

如果你在字典上迭代,你只会得到关键字。请尝试使用可读的.items()中的键、值:!可能重复的谢谢!我现在能拿到它,但它限制了我一定的数量。输出中应该有400个左右,但我只看到10个左右。我应该如何调整for循环来解析每个结果中的每个用户名以获取每个用户名?我添加了一个迭代器,它被添加到每个循环中,但它只获取10个左右。因此,我有一个可读的:print(可读的[“结果”][count][“用户名”])count+=1您必须向我们展示更多的代码(当然不是整个JSON,您可以用
替换太多的对象)。不管你有多少个
结果。