У меня есть этот файл .JSON, в котором указано, какая еда будет в нашей школе в течение недели. (Извините, это на шведском языке)
Вот файл JSON
{
"feedbackAllowed": "True",
"weeks": [
{
"days": [
{
"date": 1647820800,
"items": [
"Korv Stroganoff serveras med ris",
"Vegetarisk Stroganoff med sojakorv serveras ris"
]
},
{
"date": 1647907200,
"items": [
"Pasta serveras med laxsås",
"Vegetarisk pastasås"
]
},
{
"date": 1647993600,
"items": [
"Morotslasagne med keso och soltorkad tomat",
"Kökets klimatsmarta rätt ( vegetarisk lasagne)"
]
},
{
"date": 1648080000,
"items": [
"Het kycklingsoppa serveras med mjukt bröd och ost samt frukt",
"Vegetarisk nudelsoppa serveras med mjukt bröd och ost samt frukt"
]
},
{
"date": 1648166400,
"items": [
"Quorngryta med chili serveras med ris",
"Kökets klimatsmarta rätt"
]
}
],
"number": 12,
"year": 2022
}
],
"school": {
"URLName": "XXX",
"id": 000,
"district": {
"province": {
"URLName": "XXX",
"id": 000,
"name": "XXX"
},
"URLName": "XXX",
"id": 000,
"name": "000"
},
"name": "000"
},
"id": 000,
"bulletins": [
{
"text": "XXX"
}
]
}
То, что я ищу, - это способ распечатать только «элементы» (все из них) из файла JSON. Я просмотрел много руководств, и я продолжаю получать такие ошибки, как:
TypeError: '_io.TextIOWrapper' object is not callable
и т. д.
я пытался использовать это
import json
with open('filename.json', 'r') as input:
obj = json.load(input)
#make it a string the item is the first one
print(str(obj['items']))
но я получил эту ошибку:
KeyError: 'items'
В вашем файле JSON нет ключа с именем items. Этот ключ существует во внутренних словарях. Например weeks->days->items. Поэтому вам нужно вызвать что-то вроде:print(str(obj['weeks']['days']['items']))
weeks и days — это списки, их нужно проиндексировать.
Если вы хотите распечатать все элементы, вам нужно перебрать все недели и дни.






Вы должны перебрать все недели и дни.
for week in obj['weeks']:
for day in week['days']:
print(day['items'])
Таким образом, свойство items, к которому вы пытаетесь получить доступ, глубоко вложено в структуру JSON. Как правильно указал Бармар, вам нужно будет сначала войти в массив недель, а затем в массивы дней в течение каждой недели, чтобы получить доступ к объектам, имеющим свойство «элементы».
объект > недели > дни > предметы
Циклы for будут вашим лучшим другом для вывода этих свойств.
Я смог получить к ним доступ вот так. Просто перемещаясь по диктовкам и спискам
for i in range(len(obj['weeks'][0]['days'])):
print(obj['weeks'][0]['days'][i]['items'])
Дополнительное (может быть, основное) примечание: не используйте
inputв качестве имени переменной, так как оно предопределено в python для получения ввода от пользователей через консоль.