[英]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.