Python ijson on 组织不良的 json



我正在尝试从Kontakt.io的MQTT代理中获取数据。这是它提供的格式,包括前导 b' 和尾随 '

b'[
{
"timestamp":1530121741,
"sourceId":"OaBW9",
"trackingId":"t7J5",
"rssi":-57,
"proximity":"IMMEDIATE",
"scanType":"BLE",
"deviceAddress":"ea:21:88:b3:d2:5f"
},
{
"timestamp":1530121741,
"sourceId":"OaBW9",
"trackingId":"t7J5",
"rssi":-68,
"proximity":"IMMEDIATE",
"scanType":"BLE",
"deviceAddress":"ea:21:88:b3:d2:5f"
}
]'

看到 JSON 中除了块之外没有组织,我如何使用密钥实际从中提取数据?

我试过:

test = ijson.items(str(msg.payload), 'rssi.item')
columns = list(test)
print(columns[0])

正如在许多示例中所看到的,但是我不知道如何在不"挖洞"到JSON树的情况下使其工作(如随处可见的earth.europe.etc.item示例(。我应该尝试使用数组索引或类似的东西来获取rssi.item吗?我应该修剪 json 的"b"和尾随的"'"吗?

我不经常使用Python,所以我觉得有点不合时宜。

试试这个:

import json 
a = b'''[
{
"timestamp":1530121741,
"sourceId":"OaBW9",
"trackingId":"t7J5",
"rssi":-57,
"proximity":"IMMEDIATE",
"scanType":"BLE",
"deviceAddress":"ea:21:88:b3:d2:5f"
},
{
"timestamp":1530121741,
"sourceId":"OaBW9",
"trackingId":"t7J5",
"rssi":-68,
"proximity":"IMMEDIATE",
"scanType":"BLE",
"deviceAddress":"ea:21:88:b3:d2:5f"
}
]'''

b = json.loads(a)
print([x.get('rssi') for x in b])

输出:

[-57, -68]

在Konstantin和juanpa.arrivillaga的答案的帮助下解决。 使用导入json而不是ijson

test = json.loads(msg.payload.decode())
print([x.get('rssi') for x in test])

最新更新