[英]Iterate through nested JSON object
如何通过JSON解析未知变量? 我知道“欧洲”将一直存在,但是城市名称(例如德国,...等)将始终是可变的。 我正在尝试从每个条目中提取城市和主机名。
{
"Europe": {
"Germany": [
{
"hostname": "host1"
}
],
"Poland": [
{
"hostname": "host2"
}
],
"Denmark": [
{
"hostname": "host3"
}
],
遍历countries['Europe'].items()
:
countries = {"Europe":
{"Germany": [{"hostname": "host1"}],
"Poland": [{"hostname": "host2"}],
"Denmark": [{"hostname": "host3"}]}
}
for k, v in countries["Europe"].items():
print(k, v[0]['hostname'])
Germany host1
Poland host2
Denmark host3
>>>
尝试使用json
加载为字典:
import json
contries = """
{
"Europe": {
"Germany": [
{
"hostname": "host1"
}
],
"Poland": [
{
"hostname": "host2"
}
],
"Denmark": [
{
"hostname": "host3"
}
]
}
}
"""
country_host = json.loads(contries)
for k,v in country_host['Europe'].items():
print(k,v[0]['hostname'])
这将打印出国家及其主办方:
Denmark host3
Germany host1
Poland host2
您可以尝试使用jsonpath-rw
类的库并执行以下操作(请检查docs ):
from jsonpath_rw import jsonpath, parse
countries = {"Europe":
{"Germany": [{"hostname": "host1"}],
"Poland": [{"hostname": "host2"}],
"Denmark": [{"hostname": "host3"}]}
}
# To extract the country and hostname
for country in parse('$.Europe.*').find(countries):
for city in parse('$..hostname').find(country.value):
print ('{}: {}'.format(country.path, city.value))
# Germany: host1
# Poland: host2
# Denmark: host3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.