在Python json.loads字典中查找值



我正在使用一个REST API,它以以下格式返回数据:

{
"id": "2902cbad6da44459ad05abd1305eed14",
"displayName": "",
"sourceHost": "dev01.test.lan",
"sourceIP": "192.168.145.1",
"messagesPerSecond": 0,
"messages": 2733,
"size": 292062,
"archiveSize": 0,
"dates": [
{
"date": 1624921200000,
"messages": 279,
"size": 29753,
"archiveSize": 0
},
{
"date": 1625007600000,
"messages": 401,
"size": 42902,
"archiveSize": 0
}
]
}

我正在使用json.loads成功地从API中提取数据,现在我需要搜索特定的";日期:";值并读取相应的"0";消息"尺寸";以及";archiveSize";价值观

我正在尝试使用";如果在";方法来找到我感兴趣的值,例如:

response = requests.request("GET", apiQuery, headers=headers, data=payload)
json_response = json.loads(response.text)
test = 2733
if test in json_response.values():
print(f"Yes, value: '{test}' exist in dictionary")
else:
print(f"No, value: '{test}' does not exist in dictionary")

这对于JSON返回的顶部中的任何值都很好,但它从未在"中找到任何值;日期";分支机构。

我有两个问题,第一,我如何找到目标;日期";价值其次,一旦我发现";"支行";提取我需要的三个值的最佳方法是什么?

谢谢。

from json import load
def list_dates_whose_message_count_equals(dates=None, message_count=0):
return list(filter(
lambda date: date.get("messages") == message_count, dates
))

def main():
json_ = {}
with open("values.json", "r") as fp:
json_ = load(fp)
print(list_dates_whose_message_count_equals(json_["dates"], message_count=279))
print(list_dates_whose_message_count_equals(json_["dates"], message_count=401))

if __name__ == "__main__":
main()

返回此

[{'date': 1624921200000, 'messages': 279, 'size': 29753, 'archiveSize': 0}]
[{'date': 1625007600000, 'messages': 401, 'size': 42902, 'archiveSize': 0}]

最新更新