如何从 Python 正确访问 JSON 中的属性?

6 python json google-slides-api

编辑:正如一些用户所指出的,该请求实际上并不返回 JSON,而是返回一个字符串编码的 JSON。这里的问题实际上并不是用 python 解析 JSON,而是以可以将请求发送到 API 的方式编写它。因此,没有必要使用 json python 库。

我正在通过 python 程序使用各种 google API(幻灯片、驱动器、表格等)。我在访问 API 请求返回的 JSON 中的属性时遇到问题。

以幻灯片演示文稿().get请求为例。它返回一个presentation的实例。我想访问它的 Slides 属性,它是一个页面对象数组。

所以我正在尝试代码

slideInfo = SLIDES.presentations().get(presentationId=presId).execute()
slideInfo = slideInfo.get(['slides'][0]['pageType'])
Run Code Online (Sandbox Code Playgroud)

但我收到一条错误消息“TypeError:字符串索引必须是整数”

但是,我认为使用括号和字符串来代替点访问是可以接受的。事实上,我不知道如何将其转换为点访问器,因为它会引发语法错误,因为键必须用引号引起来。

'slides'[0].'pageType' 
Run Code Online (Sandbox Code Playgroud)

由于点而引发语法错误,如果没有点,它也不起作用

Rya*_*yan 5

因此,使用文档中的 JSON 表示形式:

{
  "presentationId": string,
  "pageSize": {
    object (Size)
  },
  "slides": [
    {
      object (Page)
    }
  ],
  "title": string,
  "masters": [
    {
      object (Page)
    }
  ],
  "layouts": [
    {
      object (Page)
    }
  ],
  "locale": string,
  "revisionId": string,
  "notesMaster": {
    object (Page)
  }
}
Run Code Online (Sandbox Code Playgroud)

您可以使用以下方式访问幻灯片:slideInfo.get('slides')slideInfo['slides']

因此,如果您想获取pageType第一张幻灯片的内容,则应为:

slideInfo['slides'][0]['pageType']
Run Code Online (Sandbox Code Playgroud)

或者

slideInfo.get('slides')[0].get('pageType')
Run Code Online (Sandbox Code Playgroud)