Py学习  »  Python

我试图用python打印json文件中的信息

spxrtzy • 3 年前 • 1517 次点击  

我有这个。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'
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129768
 
1517 次点击  
文章 [ 3 ]  |  最新文章 3 年前
Stefrik
Reply   •   1 楼
Stefrik    3 年前

我可以这样接近它们。只是浏览一下目录和清单

for i in range(len(obj['weeks'][0]['days'])):
    print(obj['weeks'][0]['days'][i]['items'])
Andrew Ding
Reply   •   2 楼
Andrew Ding    3 年前

所以 items 您试图访问的属性深入嵌套在JSON结构中。正如Barmar正确指出的那样,为了访问具有“items”属性的对象,您必须首先进入weeks数组,然后是days数组。

obj>周>天>项目

For loops将是您打印这些属性的最佳朋友。

Barmar
Reply   •   3 楼
Barmar    3 年前

你必须在所有的星期和日子里循环。

for week in obj['weeks']:
    for day in week['days']:
        print(day['items'])