对象类型和访问嵌套值

时间:2014-08-11 00:55:11

标签: python json python-2.7 google-api google-calendar-api

我在查找python google库Calendar API时遇到了麻烦(或找到了我能理解的详细文档)。我试图弄清楚我的返回对象有哪些方法,以及如何访问其数据成员。我已按照"授权API下https://developers.google.com/api-client-library/python/start/get_started处的安装应用程序示例的教程进行操作。"在下面的代码中,我已成功通过身份验证,并请求事件列表。返回的值是事件"items"的JSON列表。返回值here的完整描述。

service = discovery.build('calendar', 'v3', http=http)

try:
    #sample from google devs, prints title of all events, ever on primary
    request = service.events().list(calendarId='primary')
    while request != None:
        response = request.execute()
        for event in response.get('items', []):
            print repr(event.get('summary', 'NO SUMMARY')) + '\n'
        request = service.events().list_next(request, response)'''

我在for循环中访问成员数据时遇到问题。 '总结'是来自' items'的event的顶级数据成员,并且只是一个字符串。 '创建器'是一个字典,值为displayName我要打印。如果我尝试类似print repr(event.get('creator') + '\n'的内容,则会打印字典'创建者'。如果我尝试`print repr(event.get' creator [" displayName"]'),它总是打印无。我通过这样做解决了这个问题:

creator = event.get('creator')
print str(creator['displayName']) + '\n'

但是我想我错过了某种语法,它允许我在一行中访问内部值。另一件事是,我不了解循环中的对象event是什么类型。我的意思是,显然它是从请求返回的event对象,但我能找到的唯一API文档是指service.events()创建的对象。这个event.get()方法与文档中的方法不同(至少,它有不同的args),但我不知道在哪里可以找到该文档。

TL; DR 用于从返回列表中访问事件中的字典值的语法 从返回列表中找到事件的方法描述/文档的位置

1 个答案:

答案 0 :(得分:1)

响应中的对象是字典,应该支持所有same methods。使用括号表示法访问对象的属性通常最简单。

print event['creator']['displayName']