簡體   English   中英

在Python中迭代和打印JSON對象

[英]Iterating and printing JSON objects in Python

我有一個Google Spreadsheet,我想用Python獲取,然后通過JSON處理它。 它已經完成了一半,在瀏覽Stackoverflow幾個小時后,我認為是時候提問了。

例如,JSON文件的格式如下所示(來自https://developers.google.com/gdata/docs/json )。

{
  "version": "1.0",
  "encoding": "UTF-8",
  "feed": {
    "xmlns": "http://www.w3.org/2005/Atom",
    "xmlns$openSearch": "http://a9.com/-/spec/opensearchrss/1.0/",
    "xmlns$gd": "http://schemas.google.com/g/2005",
    "xmlns$gCal": "http://schemas.google.com/gCal/2005",
    "id": {"$t": "..."},
    "updated": {"$t": "2006-11-12T21:25:30.000Z"},
    "title": {
      "type": "text",
      "$t": "Google Developer Events"
    },
    "subtitle": {
      "type": "text",
      "$t": "The calendar contains information about upcoming developer 
       conferences at which Google will be speaking, along with other 
       developer-related events."
    },
    "link": [{
      "rel": "...",
      "type": "application/atom+xml",
      "href": "..."
      },{
      "rel": "self",
      "type": "application/atom+xml",
      "href": "..."
    }],
    "author": [{
      "name": {"$t": "Google Developer Calendar"},
      "email": {"$t": "developer-calendar@google.com"}
    }],
    "generator":{
      "version": "1.0",
      "uri": "http://www.google.com/calendar",
      "$t": "Google Calendar"
    },
    "openSearch$startIndex": {"$t": "1"},
    "openSearch$itemsPerPage": {"$t": "25"},
    "gCal$timezone": {"value": "America/Los_Angeles"},

    "entry": [{
      "id": {"$t": "..."},
      "published": {"$t": "2006-11-12T21:25:30.000Z"},
      "updated": {"$t": "2006-11-12T21:25:30.000Z"},
      "category": [{
        "scheme": "...",
        "term": "..."
      }],
      "title":{
        "type": "text",
        "$t": "WebmasterWorld PubCon 2006: Google Developer Tools in General"
      },
      "content": {
        "type": "text",
        "$t": "Google is sponsoring at
          <a href=\"http://www.pubcon.com/\">WebmasterWorld PubCon 2006</a>.
          \n Come and visit us at the booth or join us for an evening demo
          reception where we will be talking \"5 ways to enhance your website
          with Google Code\". \n After all, \n it is Vegas, baby! See you soon."
      },
      "link": [{
        "rel": "alternate",
        "type": "text/html",
        "href": "...",
        "title": "alternate"
        },{
        "rel": "self",
        "type": "application/atom+xml",
        "href": "..."
      }],
      "author": [{
        "name": {"$t": "Google Developer Calendar"},
        "email": {"$t": "developer-calendar@google.com"}
      }],
      "gd$transparency": {"value": "http://schemas.google.com/g/2005#event.opaque"},
      "gd$eventStatus": {"value": "http://schemas.google.com/g/2005#event.confirmed"},
      "gd$comments": {"gd$feedLink": {"href": "..."}},
      "gCal$sendEventNotifications": {"value": "true"},
      "gd$when": [{
        "startTime": "2006-11-15",
        "endTime": "2006-11-17",
        "gd$reminder": [{"minutes": "10"}]
      }],
      "gd$where": [{"valueString": "3150 Paradise Road,Las Vegas,NV 89109"}]},
    }]
  }
}

我的Python代碼如下:

import requests, json
r = requests.get('link-to-google-spreadsheet-json')
j = r.json()

測試JSON文件的頂級層次結構輸出如下:

>>> print j["version"]
1.0

但迭代對象,如下所示:

for feed in j["feed"]:
    for entry in feed["entry"]:
        for title in entry["title"]:
            print title["$t"]
        print
    print

給我以下錯誤:

Traceback (most recent call last):
File "<console>", line 2, in <module>
TypeError: string indices must be integers.

聽起來它想要從字符串中打印一個字母,只要我給出索引號。 那么如何解析JSON以便正確輸出我想要的內容(例如feed - > entry - > title - > $ t)?

j ['feed']是一本字典。 您的代碼應如下所示:

for entry in j['feed']['entry']:
    print entry['title']['$t']

feedtitle是字典而不是列表,因此你不應該對它們進行for循環。 您只需要一個用於條目列表的for循環。

暫無
暫無

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

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