Python-如何使用JSON.load迭代JSON数据



我有下面的JSON,我用JSON.load((解析它

{
"participants": [
{
"name": "Joseph Bloggs"
},
{
"name": "John Doe"
}
],
"messages": [
{
"sender_name": "Joseph Bloggs",
"timestamp_ms": 1606943360034,
"content": "Hello John",
"type": "Generic"
},
{
"sender_name": "John Doe",
"timestamp_ms": 1606943285176,
"content": "Hi Joe",
"type": "Generic"
},

我尝试在消息中进行迭代,以搜索每个值中的字符串。

import json 
data = json.load(f)

for msg in data['messages']:
search = 'Jo'
if search in str(msg['sender_name']) :
print (msg['sender_name'])

这工作并输出一个";Joe Bloggs"或";John Doe";每个消息对象的字符串。

如果我尝试搜索任何其他键、时间戳、内容、类型,我会得到KeyError,例如,尝试搜索参与者使用单词"的所有消息;你好;。

if search in str(msg['content']) :
print (msg['content'])

导致一个关键错误:

in <module>
if search in str(msg['content']) :
KeyError: 'content'

我想我对json.load和Python字典/列表有些不了解。为什么msg[sender_name]有效,而msg[content]无效?感谢

我刚试过.get('content'(,它成功了。。。

search = 'Thing I am searching for'
if search in str(msg.get('content')) :
print (msg.get('content'))

如果有人能详细说明,我将不胜感激。我已经找到了解决方案,但我想了解"为什么"。感谢

您可以在字典上使用.get((方法来避免KeyError

if search in str(msg.get('content')):
print(str(msg.get('sender_name')))

最新更新