尝试使用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"
}
]
}
我试图用来访问它的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,这是每个项目的第一个字母。如果我试试[1],我会得到每个项目的第二个字母。当我按名称尝试时,比如说,我[[start]],我得到一个错误,说字符串索引必须是整数。我很困惑,我是Python新手,但我还没有找到任何东西。请帮忙!我只想访问用户名字段,这就是我尝试执行for循环的原因。提前谢谢!
答案 0 :(得分:2)
试试这个:
for i in readable["results"]:
print i["username"]
答案 1 :(得分:2)
加载你的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']
答案 2 :(得分:1)
for i in readable
将通过i
词典中的每个键重复readable
。如果您随后打印i[0]
,则表示您正在打印每个键的第一个字符。
假设您希望列表中与"username"
键关联的条目中与"results"
键关联的值,您可以这样得到它们:
for result in readable["results"]:
print (result["username"])
答案 3 :(得分:0)
如果readable
是您的JSON对象(dict
),则可以使用其键访问每个地图中的元素。
readable["results"][0]["username"]
应该为您提供"SYSTEM"
字符串。
要打印每个用户名,请执行以下操作:
for result in readable["results"]:
print(result["username"])
如果您的JSON是str
对象,则必须deserialize it with json.loads(readable)
first。