簡體   English   中英

遍歷嵌套的JSON對象

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

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