首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过使用python解析json响应来提取所有服务器?

通过使用python解析json响应来提取所有服务器?
EN

Stack Overflow用户
提问于 2019-06-06 05:12:47
回答 2查看 52关注 0票数 0

我有一个服务urlA,如果我调用它,它会给我下面的json响应,其中有按数据中心键入的服务器列表。将来,我可以有更多的密钥,每个密钥有更多的服务器。

代码语言:javascript
复制
{
    "abc": ["goldy11.abc.host.com", "goldy12.abc.host.com"],
    "pqr": ["goldy21.pqr.host.com", "goldy22.pqr.host.com"],
    "def": ["goldy31.def.host.com", "goldy32.def.host.com"],
    "jhk": ["goldy41.jhk.host.com", "goldy42.jhk.host.com"]
}

类似地,我有另一个服务urlB,它给出类似的响应,但不同的服务器组:

代码语言:javascript
复制
{
    "abc": ["goldy81.abc.host.com", "goldy82.abc.host.com"],
    "pqr": ["goldy91.pqr.host.com", "goldy92.pqr.host.com"],
    "def": ["goldy71.def.host.com", "goldy72.def.host.com"],
    "jhk": ["goldy51.jhk.host.com", "goldy52.jhk.host.com"]
}

我想从上面的json响应中提取两个url中的所有服务器名称,如下所示:

代码语言:javascript
复制
goldy11.abc.host.com
goldy12.abc.host.com
goldy21.pqr.host.com
goldy22.pqr.host.com
goldy31.def.host.com
goldy32.def.host.com
goldy41.jhk.host.com
goldy42.jhk.host.com
goldy81.abc.host.com
goldy82.abc.host.com
goldy91.pqr.host.com
goldy92.pqr.host.com
goldy71.def.host.com
goldy72.def.host.com
goldy51.jhk.host.com
goldy52.jhk.host.com

所以我是这样开始的,但是我有点困惑于如何通过解析来自两个服务url的json响应来提取所有的服务器,而不是以硬编码的方式指定任何键?

代码语言:javascript
复制
import json
import requests

responsea = requests.get("service-url-a")
responseb = requests.get("service-url-b")
json_data_a = json.loads(responsea.text)
json_data_b = json.loads(responseb.text)
# how can I combine both json_data_a and json_data_b response in the hosts list
hosts = [value for value_set in json_data_a.values() for value in value_set]
print hosts
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-06 05:47:07

你想展平你的数组。如下所示:

hosts = [value for value_set in json_data.values() for value in value_set]

这将为您提供所有主机的列表。然后,您可以从那里继续执行剩下的任务。

票数 1
EN

Stack Overflow用户

发布于 2019-06-06 06:57:13

代码语言:javascript
复制
>>> import json
>>> a = """{
...     "abc": ["goldy11.abc.host.com", "goldy12.abc.host.com"],
...     "pqr": ["goldy21.pqr.host.com", "goldy22.pqr.host.com"],
...     "def": ["goldy31.def.host.com", "goldy32.def.host.com"],
...     "jhk": ["goldy41.jhk.host.com", "goldy42.jhk.host.com"]
... }"""

>>> b = """{
...     "abc": ["goldy81.abc.host.com", "goldy82.abc.host.com"],
...     "pqr": ["goldy91.pqr.host.com", "goldy92.pqr.host.com"],
...     "def": ["goldy71.def.host.com", "goldy72.def.host.com"],
...     "jhk": ["goldy51.jhk.host.com", "goldy52.jhk.host.com"]
... }"""
>>> data_a = json.loads(a)
>>> data_b = json.loads(b)
>>> print(json.dumps([value for values in list(data_a.values()) + list(data_b.values()) for value in values], indent=True))
[
 "goldy21.pqr.host.com",
 "goldy22.pqr.host.com",
 "goldy11.abc.host.com",
 "goldy12.abc.host.com",
 "goldy41.jhk.host.com",
 "goldy42.jhk.host.com",
 "goldy31.def.host.com",
 "goldy32.def.host.com",
 "goldy91.pqr.host.com",
 "goldy92.pqr.host.com",
 "goldy81.abc.host.com",
 "goldy82.abc.host.com",
 "goldy51.jhk.host.com",
 "goldy52.jhk.host.com",
 "goldy71.def.host.com",
 "goldy72.def.host.com"
]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56468093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档