I'm trying to get data out of Kontakt.io's MQTT broker. This is the format it's providing, including the leading b' and trailing '
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"
}
]'
Seeing as there's no organization in the JSON other than in blocks, how can I actually pull the data from it using keys?
I've tried:
test = ijson.items(str(msg.payload), 'rssi.item')
columns = list(test)
print(columns[0])
As seen in many examples, but I can't figure out how to make it work without "burrowing" into JSON trees (as in the earth.europe.etc.item examples seen everywhere). Should I be trying to get rssi.item using array indexes or something like that? Should I trim the json's " b' " and trailing " ' "?
I don't work with Python very often, so I feel a little out in the water with this.
Solved with help by Konstantin and juanpa.arrivillaga's answers combined. Used import json not ijson
test = json.loads(msg.payload.decode())
print([x.get('rssi') for x in test])