我有这个JSON文件。你知道吗
{
"reviewers":[
{
"user":{
"name":"keyname",
"emailAddress":"John@email",
"id":3821,
"displayName":"John Doe",
"active":true,
"slug":"jslug",
"type":"NORMAL",
"link":{
"url":"/users/John",
"rel":"self"
},
},
"role":"REVIEWER",
"approved":true
},
{
"user":{
"name":"keyname2",
"emailAddress":"Harry@email",
"id":6306,
"displayName":"Harry Smith",
"active":true,
"slug":"slug2",
"link":{
"type":"NORMAL",
"url":"/users/Harry",
"rel":"self"
},
},
"role":"REVIEWER",
"approved":false
}
],
}
最初,我使用的是一段代码,它将遍历并获取审阅者的全名。你知道吗
def get_reviewers(json):
reviewers = ""
for key in json["reviewers"]:
reviewers += key["user"]["displayName"] + ", "
reviewers = reviewers[:-2]
return reviewers
返回"John Doe, Harry Smith"
。但是,现在我正在尝试获取它,这样如果用户的标记等于true "approved"=true
,脚本就会在用户名旁边返回a(a)。你知道吗
例如,上面的代码将获得名称,然后看到John的approved标记为true,Harry的为false,然后返回"John Doe(A), Harry Smith"
。我只是不知道从哪里开始。有人能给我指出正确的方向吗?你知道吗
这是我迄今为止一直在尝试的,但显然它并没有像我希望的那样工作。你知道吗
def get_reviewers(stash_json):
reviewers = ""
for key in stash_json["reviewers"]:
if stash_json["reviewers"][0]["approved"] == true:
reviewers += key["user"]["displayName"] + "(A)" + ", "
else:
reviewers += key["user"]["displayName"] + ", "
reviewers = reviewers[:-2]
return reviewers
输出Jason Healy(A), Joan Reyes(A)
这就是我的stash_json
通过pprint输出的内容。你知道吗
这看起来是使用
join
和列表理解的好地方:你可能想要这样的东西:
我认为你的困惑部分来自于这样一个事实,即“reviewers”是
list
个dict
元素,每个dict
元素都有一个键值approved
,但也有一个键“user”,这个值本身就是另一个dict
。你知道吗仔细阅读JSON文件,出于调试目的,请使用大量
或者
相关问题 更多 >
编程相关推荐