我对Python很陌生。除了下面的代码之外,还有什么可以检查python中是否存在特定的JSON对象吗?承认我下面的代码不是很好的实践,所以需要知道哪种方法更易于检查和维护?
以下是JSON响应:
[
{
"MessageId": "250e37a8-d779-48a1-9941-84219a82513e",
"ReceiptHandle": "AQEBjualXe2ywqTgIVmCNI5sKj7r48werf84HHA2BWZimwiEXLFxA/MiPBclK048NZBtOnM3dSDfoiwwqoNTPxTRz+IChd8McziweCxHX6texjAOi/MyAQjCWP+2hJPoxzQgXx9kjnKbepKlcgxhpOiQZe6WiSIq0dXwHHXSA7SP0g9NIR/dU38b+wmo0m2q7MNVfSct967EKF49wow9RHyFMO8iD8fH93PYT9om5NdUha3dvkWnisKcfuO5pZY3LLXPAnuZT/VfqxJjmPqb98iepBfqFb6SpM/02IVSql81XKJEbMBc4zPHp/Uace6e4UDGsn/hPCVsqQsTzrbKCR+ovpkhXipWwTYSlgsLe/o43k0UxhCN8eKhg835KuUkskA3T8C5Q6v6xgznlR7JJuhZpg==",
"MD5OfBody": "bbdc5fdb8be7251f5c910905db994bab",
"Body": "Information about current NY Times fiction bestseller for week of 12/11/2016.",
"Attributes": {
"SentTimestamp": "1553851566164"
},
"MD5OfMessageAttributes": "d25a6aea97eb8f585bfa92d314504a92",
"MessageAttributes": {
"Author": {
"StringValue": "John Grisham",
"DataType": "String"
},
"Title": {
"StringValue": "The Whistler",
"DataType": "String"
},
"WeeksOn": {
"StringValue": "6",
"DataType": "Number"
}
}
}
]
下面是我要检查的python代码:
if 'Messages' in response:
message = response['Messages'][0]
receipt_handle = message['ReceiptHandle']
sqs.delete_message(
QueueUrl=queue_url,
ReceiptHandle=receipt_handle
)
print('Received and deleted message: %s' % message)
else:
print('Message not received yet')
请让我知道以上代码是否是良好的做法。
您可以签出的另一个选项,也是我在使用JSON数据时实际喜欢的选项,是从JSON数据创建一个对象并使用
hasattr
方法。这将防止重新开始使用try-except块,也可以使代码更易于理解。使用数据的示例如下:输出:
前面已经提到过,示例json不包含键
Messages
。我觉得你的代码看起来不错。但是,如果没有键Messages
的json非常罕见,那么我将使用try-except块。每次您获得“正确”的json时,这将更快。但是当您得到一个缺少键的json时速度会慢一些。所以也许你需要弄清楚没有钥匙的情况是否经常发生。
但这取决于用例。我的答案只是我自己的观点和类似用例的经验
由于响应是dict的
list
:输出:
编辑:
另一种方法是在访问之前检查每个密钥,即(从响应中删除
ReceiptHandle
elem):输出:
相关问题 更多 >
编程相关推荐