首页 > 解决方案 > 在python中解析JSON对象

问题描述

我正在尝试对我们的 Wi-Fi 控制器进行一些 (JSON) API 调用并获取一些信息。当我以某种方式将 JSON 响应存储到 adict时,它只看到几个键,即:

   dict_keys(['totalCount', 'hasMore', 'firstIndex', 'list'])

和项目:

   dict_items([('totalCount', 32), ('hasMore', False), ('firstIndex', 0), 
   ('list', [{'id': 'ehgfhafgf', 'name': 'fasdfsd 
   xxxx'}, {'id': 'efasfsfas', 
   'name': 'zxcva'}])])

我删除了很多项目,所以它会有些意义,否则它会是太多的文字。

因此,您可以看到dict将错误的变量识别为键。因为作为键我需要idname. 有没有办法手动分配dict键或模拟这个的技巧?

我的一段代码:

#Method that retrieves all zones
def getZones():
    r = requests.get("url..", verify=False, cookies=cookie)
    print(type(r.json()))
    jsonResponse = r.json()
    print("items: \n") 
    print(jsonResponse.items())
    print("\nkeys: \n")
    print(jsonResponse.keys())
    print(jsonResponse.get('id'))
    return r

出于调试原因进行了大量打印。

标签: pythonjsondictionary

解决方案


如果您显示了实际的 JSON 响应,您的问题会更清楚。

但是,从您发布的内容可以清楚地看出,它id确实name不是顶级键,而是分配给键的列表中嵌套字典内的list键。所以你应该从那里得到它们:

for item in jsonResponse['list']:
    print(item['id'], item['name'])

推荐阅读