[英]python parse json data in a for loop
我正在嘗試從 json 解析我的數據。 我有一個加載所有數據的函數......數據是這樣的:
devices_infos = get_devices()
{
"page" : 0,
"size" : 20,
"totalCount" : 2,
"data" : [ {
"namespace" : "android",
"id" : "0000001111111",
"creationTs" : 1516216756819,
"name" : "Eric's phone",
"description" : "This device was auto registered by [mqtt] ",
"tags" : [ ],
"properties" : { },
"lastUpdateTs" : 1518610495832,
"connected" : false,
"path" : [ ],
"metadata" : {
"api_key_id" : "XXX000XXX000XXX",
"connection_start_time" : "2018-02-14T12:14:04.778Z",
"mqtt_version" : 4,
"mqtt_username" : "json+device",
"mqtt_timeout" : 20,
"remote_addr" : "00.00.00.00/PORT"
},
"groupId" : "root",
"groupPath" : "/"
}, {
"namespace" : "sensor",
"id" : "temp001",
"creationTs" : 1520415684605,
"name" : "mySensor001",
"description" : "moisture sensor",
"tags" : [ "france", "lyon" ],
"properties" : {
"manufacturer" : "miel",
"model" : "MoistureSensorV3"
},
"lastUpdateTs" : 1520415684605,
"connected" : false,
"path" : [ ],
"groupId" : "root",
"groupPath" : "/"
} ]
我想通過這樣的 for 循環提取設備的名稱:
if devices_infos is not None:
print('Devices are: ')
for each in devices_infos['data'][0]['name']:
print (each)
else:
print("[!] Request failed")
這只會打印我的第一個設備,即Eric's phone
,我也想要mySensor001
。
刪除 [0]
for device in devices_infos['data']:
name = device['name']
[...] 表示 JSON 上下文中的數組,因此您必須對其進行迭代(循環)。
嘗試這個:
>>> import json
>>> str = '''
... {
... "page" : 0,
... "size" : 20,
... "totalCount" : 2,
... "data" : [ {
... "namespace" : "android",
... "id" : "0000001111111",
... "creationTs" : 1516216756819,
... "name" : "Eric's phone",
... "description" : "This device was auto registered by [mqtt] ",
... "tags" : [ ],
... "properties" : { },
... "lastUpdateTs" : 1518610495832,
... "connected" : false,
... "path" : [ ],
... "metadata" : {
... "api_key_id" : "XXX000XXX000XXX",
... "connection_start_time" : "2018-02-14T12:14:04.778Z",
... "mqtt_version" : 4,
... "mqtt_username" : "json+device",
... "mqtt_timeout" : 20,
... "remote_addr" : "00.00.00.00/PORT"
... },
... "groupId" : "root",
... "groupPath" : "/"
... }, {
... "namespace" : "sensor",
... "id" : "temp001",
... "creationTs" : 1520415684605,
... "name" : "mySensor001",
... "description" : "moisture sensor",
... "tags" : [ "france", "lyon" ],
... "properties" : {
... "manufacturer" : "miel",
... "model" : "MoistureSensorV3"
... },
... "lastUpdateTs" : 1520415684605,
... "connected" : false,
... "path" : [ ],
... "groupId" : "root",
... "groupPath" : "/"
... } ]}'''
>>> d = json.loads(str)
>>> d
{u'totalCount': 2, u'data': [{u'lastUpdateTs': 1518610495832L, u'description': u'This device was auto registered by [mqtt] ', u'tags': [], u'namespace': u'android', u'creationTs': 1516216756819L, u'properties': {}, u'connected': False, u'groupPath': u'/', u'groupId': u'root', u'path': [], u'metadata': {u'api_key_id': u'XXX000XXX000XXX', u'remote_addr': u'00.00.00.00/PORT', u'mqtt_username': u'json+device', u'mqtt_timeout': 20, u'connection_start_time': u'2018-02-14T12:14:04.778Z', u'mqtt_version': 4}, u'id': u'0000001111111', u'name': u"Eric's phone"}, {u'lastUpdateTs': 1520415684605L, u'description': u'moisture sensor', u'tags': [u'france', u'lyon'], u'namespace': u'sensor', u'creationTs': 1520415684605L, u'properties': {u'model': u'MoistureSensorV3', u'manufacturer': u'miel'}, u'connected': False, u'groupPath': u'/', u'groupId': u'root', u'path': [], u'id': u'temp001', u'name': u'mySensor001'}], u'page': 0, u'size': 20}
>>> for i in d['data']:
... print(i['name'])
...
Eric's phone
mySensor001
我希望這能解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.