我们的一个系统为我提供了如下数据:
[
{
"count": 1,
"headings": [
"name",
"Hosts"
],
"kind": "ApplicationInstance",
"offset": 0,
"results": [
[
"demo",
[
"hostname2.domain.com",
"hostname3.domain.com",
"hostname4.domain.com",
"hostname1",
"hostname5",
"hostname7"
]
]
]
}
]
此数据是python脚本中cURL命令的结果。
现在,我正在尝试找出最好的方法来获取所有属于“演示”的主机(包括主机名,如果有的话,包括其域名)。
赞:
hostname2.domain.com
hostname3.domain.com
hostname4.domain.com
hostname1
hostname5
hostnam8
到目前为止,我无法使用grep或regex取得成功,但是我相当有信心我没有以正确的方式使用它。
因此,我正在寻找您的指导,以寻求最佳解决方案。您的任何指针都很棒。
答案 0 :(得分:1)
我不太确定JSON的可能值是什么,但这是一种适用于已发布字典的解决方案:
import requests
hosts = []
resp = requests.get("URL") # if you want to get it from URL
for elem in resp.json():
list_of_results = elem["results"]
for result in list_of_results:
if result[0] == "demo":
hosts.extends(result[1])
print(hosts)
# => ['hostname2.domain.com', 'hostname3.domain.com', 'hostname4.domain.com', 'hostname1', 'hostname5', 'hostname7']
如果您要为发布的JSON寻找解决方案 just ,则应使用requests.get
,而不要使用json.loads
:
import json
for elem in json.loads("JSON_STRING"):
# same code
答案 1 :(得分:1)
您可以使用json模块,甚至可以使用字符串功能。
带有json模块:
import json
with open('test.json') as json_f:
data = json.load(json_f)
for p in data:
results = p['results']
results = ((results[0])[1])
for res in results:
print(res)