簡體   English   中英

我正在嘗試使用 python 從 json 文件中打印信息

[英]I am trying to print information from a json file with python

我有這個 .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
    #cool
    print(str(obj['items']))

但我收到了這個錯誤:

KeyError: 'items'

你必須循環所有的幾周和幾天。

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

因此,您嘗試訪問的items屬性深深嵌套在 JSON 結構中。 正如 Barmar 正確指出的那樣,您必須首先進入 week 數組,然后是每周內的 days 數組,以便訪問具有“items”屬性的對象。

obj > 周 > 天 > 項目

For 循環將是您打印出這些屬性的最佳朋友。

我能夠像這樣訪問它們。 只需瀏覽字典和列表

for i in range(len(obj['weeks'][0]['days'])):
    print(obj['weeks'][0]['days'][i]['items'])

暫無
暫無

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

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