簡體   English   中英

如何使用 python 從 json output 中提取

[英]how do you extract from the json output using python

我有一個來自 http 的 json output 請求,如下所示:

print(resp)
{'totalCount': 1, 'pageSize': 50, 'entities': [{'entityId': 'HOST-12345', 'displayName': 'beff'}]}
{'totalCount': 1, 'pageSize': 50, 'entities': [{'entityId': 'HOST-7898', 'displayName': 'dude101'}]}
{'totalCount': 1, 'pageSize': 50, 'entities': [{'entityId': 'HOST-56890', 'displayName': 'prop'}]}

我需要從這個列表中獲取 entityId:

HOST-12345
HOST-7898
HOST-56890

我有這個:

print(resp['entities']['entityId'])

我收到此錯誤:

TypeError: list indices must be integers or slices, not str

索引始終是數字,因此要訪問第 1 行,您必須編寫 resp[0],現在使用點 (.) 您可以訪問內部字段。 print(resp[0]['entities'][0]['entityId'])

實際上,您當前的響應不是 JSON 格式,如果是這樣,您需要先用"\n"將其拆分以將每一行作為列表項。 然后您需要將'轉換為" 。現在您可以使用json.loads對其進行解碼以獲取字典 object 並從中獲取信息:

import json

txt = """{'totalCount': 1, 'pageSize': 50, 'entities': [{'entityId': 'HOST-12345', 'displayName': 'beff'}]}
{'totalCount': 1, 'pageSize': 50, 'entities': [{'entityId': 'HOST-7898', 'displayName': 'dude101'}]}
{'totalCount': 1, 'pageSize': 50, 'entities': [{'entityId': 'HOST-56890', 'displayName': 'prop'}]}"""

for line in txt.split('\n'):
    correct_json_format = line.replace("'", '"')
    d = json.loads(correct_json_format)
    print(d['entities'][0]['entityId'])

output:

HOST-12345
HOST-7898
HOST-56890

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM