【发布时间】:2021-10-15 16:29:06
【问题描述】:
我正在尝试使用在 AWS Lambda 函数中运行的 Python 脚本中的以下传入 json。这在通常的事件对象上作为 dict 进入 Lambda。
{
"WirelessDeviceId": "AAAAA-BBBBB-CCCC-DDDD-EEEEEEEEEEE",
"AddedDeviceDecoderType": "TEST",
"PayloadData": "Aw==",
"WirelessMetadata": {
"LoRaWAN": {
"ADR": true,
"Bandwidth": 125,
"ClassB": false,
"CodeRate": "4/5",
"DataRate": "3",
"DevAddr": "LMNOP123",
"DevEui": "DPLAMSD010101",
"FCnt": 42,
"FOptLen": 1,
"FPort": 4,
"Frequency": "905100000",
"Gateways": [
{
"GatewayEui": "ABC123",
"Rssi": -109,
"Snr": 8
}
],
"MIC": "ABC900000",
"MType": "UnconfirmedDataUp",
"Major": "LoRaWANR1",
"Modulation": "LORA",
"PolarizationInversion": false,
"SpreadingFactor": 7,
"Timestamp": "2021-08-08T16:04:10Z"
}
}
}
我正在为“网关”数组苦苦挣扎,它可能有 1 到 10 个条目。
现在,在测试期间,我只有一个网关,并且正在像这样在 Python 中解决它。
rssi = event['WirelessMetadata']['WirelessMetadata']['Gateways'][0]['Rssi']
但是当添加新网关时,我不知道该数组中有多少网关,也不知道它们被分配到什么索引,如此快速地硬编码 [0] 将不起作用。
新手问题,但处理这种情况的最佳方法是什么?我认为这可能与遍历数组有关,但我有点难以理解最佳实践。
【问题讨论】:
-
Getaway 是一个 dict 列表,因此您可以检索该列表并对其进行迭代。
-
for gw in event['WirelessMetadata']['WirelessMetadata']['Gateways']: do something with gw
标签: python arrays json aws-lambda