[英]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元素的index
和value
:
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.