簡體   English   中英

打印嵌套的JSON數據

[英]Printing Nested JSON Data

我是編程新手。 我正在處理使用請求庫獲得的一些數據。 我將響應保存到單獨的文件中。 響應中包含許多我不想打印的公司信息。 我只想要某些類型的公司數據。

我遇到的問題是嵌套鍵/值。 我可以從列表中的第一家公司訪問密鑰/值“業務年”,但問題是列表中第一家公司的密鑰/值是為數據文件中的每家公司復制的。

這是我正在使用的數據(為此帖子修改):

{
  "result": [
    {
      "info": [
        {
          "company_name": "Apples Company",
          "country_name": "America",
          "date_founded": "2018-04-01",
          "company_descr": "We sell apples.",
          "add_info": [
            {
              "years_in_business": "Over 20",
              "owns building": "Yes"
            }
          ],
          "add_data": [
            {
              "some_data_1_ID": "A0w8eed37rtfx",
              "some_data_2": "Value"
            }
          ]
        },
        {
          "company_name": "Car Company",
          "country_name": "Spain",
          "date_founded": "2012-08-09",
          "company_descr": "We sell cars",
          "add_info": [
            {
              "years_in_business": "Over 50",
              "owns building": "No"
            }
          ],
          "add_data": [
            {
              "some_data_1_ID": "Bsadf4trets77",
              "some_data_2": "No Value"
            }
          ]
        },
        {
          "company_name": "Pie Company",
          "country_name": "Germany",
          "date_founded": "1900-04-30",
          "company_descr": "We sell Pies.",
          "add_info": [
            {
              "years_in_business": "Over 100",
              "owns building": "Yes"
            }
          ],
          "add_data": [
            {
              "some_data_1_ID": "e64hfg6666",
              "some_data_2": "Value"
            }
          ]
        }
      ]
    }
  ]
}

這是我的代碼:

import json

with open('company_info.json', encoding='utf8') as file:
    company_data = json.load(file)

for key in company_data['result'][0]['info']:
    print('Company Name: ' + key.get('company_name'))
    print('Country Name: ' + key.get('country_name'))
    print('Date Founded: ' + key.get('date_founded'))
    print('Years in Business: ' + company_data['result'][0]['info'][0]
    ['add_info'][0]['years_in_business'])

這是輸出:

Company Name: Apples Company
Country Name: America
Date Founded: 2018-04-01
Years in Business: Over 20
Company Name: Car Company
Country Name: Spain
Date Founded: 2012-08-09
Years in Business: Over 20
Company Name: Pie Company
Country Name: Germany
Date Founded: 1900-04-30
Years in Business: Over 20

Process finished with exit code 0

您可以使用enumerate同時訪問list元素的indexvalue

for index, key in enumerate(company_data['result'][0]['info']):
    print('Company Name: ' + key.get('company_name'))
    print('Country Name: ' + key.get('country_name'))
    print('Date Founded: ' + key.get('date_founded'))
    print('Years in Business: ' + company_data['result'][0]['info'][index] 
    ['add_info'][0]['years_in_business'])

你需要從同一級別的鍵中的列表中提取該值,以便其他鍵dict鍵

for key in company_data['result'][0]['info']:
    print('Company Name: ' + key.get('company_name'))
    print('Country Name: ' + key.get('country_name'))
    print('Date Founded: ' + key.get('date_founded'))
    print('Years in Business: ' + key['add_info'][0]['years_in_business'])

您應該像其他人一樣迭代'years_in_business'

for key in company_data['result'][0]['info']:
    print('Company Name: ' + key.get('company_name'))
    print('Country Name: ' + key.get('country_name'))
    print('Date Founded: ' + key.get('date_founded'))
    print('Years in Business: ' + key.get('add_info')[0]['years_in_business'])

#Output:
Company Name: Apples Company
Country Name: America
Date Founded: 2018-04-01
Years in Business: Over 20
Company Name: Car Company
Country Name: Spain
Date Founded: 2012-08-09
Years in Business: Over 50
Company Name: Pie Company
Country Name: Germany
Date Founded: 1900-04-30
Years in Business: Over 100

要打印所有公司的信息,請使用類似以下內容的方法對它們的列表進行迭代:

import json

with open('company_info.json', encoding='utf8') as file:
    company_data = json.load(file)

for company in company_data['result'][0]['info']:
    print('Company Name: ' + company.get('company_name'))
    print('Country Name: ' + company.get('country_name'))
    print('Date Founded: ' + company.get('date_founded'))
    print('Years in Business: '
            + company.get('add_info')[0]['years_in_business'])
    print()

輸出:

Company Name: Apples Company
Country Name: America
Date Founded: 2018-04-01
Years in Business: Over 20

Company Name: Car Company
Country Name: Spain
Date Founded: 2012-08-09
Years in Business: Over 50

Company Name: Pie Company
Country Name: Germany
Date Founded: 1900-04-30
Years in Business: Over 100

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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