1

编辑:添加了实际的 JSON 对象和代码以供审查

我有这种格式的 JSON(只是这个层次结构,假设 JSON 正在工作)

{u'kind': u'calendar#events', u'defaultReminders': [{u'minutes': 60, u'method': u'email'},             {u'minutes': 60, u'method': u'sms'}], u'items': [{u'status': u'confirmed', u'kind': u'calendar#event', u'end': {u'date': u'2013-07-27'}, u'created': u'2013-06-15T19:06:13.000Z', u'iCalUID': u'93idui5eb15knl8aavng2iu1mc@google.com', u'reminders': {u'useDefault': True}, u'htmlLink': u'https://www.google.com/calendar/event?eid=OTNpZHVpNWViMTVrbmw4YWF2bmcyaXUxbWMgbG9nYW5AbG9nYW5oZW5zb24uY29t', u'sequence': 0, u'updated': u'2013-06-15T19:06:13.635Z', u'summary': u'white water rafting', u'start': {u'date': u'2013-07-26'}, u'etag': u'"CxZm3kc9PAmVWyOavlumf_6aLhg/MTM3MTMyMzE3MzYzNTAwMA"', u'transparency': u'transparent', u'organizer': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'creator': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'id': u'93idui5eb15knl8aavng2iu1mc'}, {u'status': u'confirmed', u'kind': u'calendar#event', u'end': {u'dateTime': u'2013-06-24T13:00:00-05:00'}, u'created': u'2013-06-21T18:32:08.000Z', u'iCalUID': u'67cjnqboq3uhkrd5udogd5pog4@google.com', u'reminders': {u'useDefault': True}, u'htmlLink': u'https://www.google.com/calendar/event?eid=Njdjam5xYm9xM3Voa3JkNXVkb2dkNXBvZzQgbG9nYW5AbG9nYW5oZW5zb24uY29t', u'sequence': 0, u'updated': u'2013-06-21T18:32:08.192Z', u'summary': u'camp counselor', u'start': {u'dateTime': u'2013-06-24T09:00:00-05:00'}, u'etag': u'"CxZm3kc9PAmVWyOavlumf_6aLhg/MTM3MTgzOTUyODE5MjAwMA"', u'organizer': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'creator': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'id': u'67cjnqboq3uhkrd5udogd5pog4'}, {u'status': u'confirmed', u'kind': u'calendar#event', u'end': {u'dateTime': u'2013-06-25T09:00:00-05:00'}, u'created': u'2013-06-21T18:32:21.000Z', u'iCalUID': u'oktlfp6503u046ueq5dqmn07qs@google.com', u'reminders': {u'useDefault': True}, u'htmlLink': u'https://www.google.com/calendar/event?eid=b2t0bGZwNjUwM3UwNDZ1ZXE1ZHFtbjA3cXMgbG9nYW5AbG9nYW5oZW5zb24uY29t', u'sequence': 0, u'updated': u'2013-06-21T18:32:21.673Z', u'summary': u'front desk', u'start': {u'dateTime': u'2013-06-25T05:45:00-05:00'}, u'etag': u'"CxZm3kc9PAmVWyOavlumf_6aLhg/MTM3MTgzOTU0MTY3MzAwMA"', u'organizer': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'creator': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'id': u'oktlfp6503u046ueq5dqmn07qs'}, {u'status': u'confirmed', u'kind': u'calendar#event', u'end': {u'dateTime': u'2013-06-25T10:00:00-05:00'}, u'created': u'2013-06-21T18:32:29.000Z', u'iCalUID': u'2j139fec1nichbua2t1p161au8@google.com', u'reminders': {u'useDefault': True}, u'htmlLink': u'https://www.google.com/calendar/event?eid=MmoxMzlmZWMxbmljaGJ1YTJ0MXAxNjFhdTggbG9nYW5AbG9nYW5oZW5zb24uY29t', u'sequence': 0, u'updated': u'2013-06-21T18:32:29.802Z', u'summary': u'camp counselor', u'start': {u'dateTime': u'2013-06-25T09:00:00-05:00'}, u'etag': u'"CxZm3kc9PAmVWyOavlumf_6aLhg/MTM3MTgzOTU0OTgwMjAwMA"', u'organizer': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'creator': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'id': u'2j139fec1nichbua2t1p161au8'}, {u'status': u'confirmed', u'kind': u'calendar#event', u'end': {u'dateTime': u'2013-06-26T09:00:00-05:00'}, u'created': u'2013-06-21T18:32:48.000Z', u'iCalUID': u'0v19db1opb8uemnqbe2m8f5sd4@google.com', u'reminders': {u'useDefault': True}, u'htmlLink': u'https://www.google.com/calendar/event?eid=MHYxOWRiMW9wYjh1ZW1ucWJlMm04ZjVzZDQgbG9nYW5AbG9nYW5oZW5zb24uY29t', u'sequence': 0, u'updated': u'2013-06-21T18:32:48.507Z', u'summary': u'fitness floor', u'start': {u'dateTime': u'2013-06-26T05:45:00-05:00'}, u'etag': u'"CxZm3kc9PAmVWyOavlumf_6aLhg/MTM3MTgzOTU2ODUwNzAwMA"', u'organizer': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'creator': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'id': u'0v19db1opb8uemnqbe2m8f5sd4'}, {u'status': u'confirmed', u'kind': u'calendar#event', u'end': {u'dateTime': u'2013-06-26T13:00:00-05:00'}, u'created': u'2013-06-21T18:32:55.000Z', u'iCalUID': u'o71t8t2pjg5fl075ipo0e14dik@google.com', u'reminders': {u'useDefault': True}, u'htmlLink': u'https://www.google.com/calendar/event?eid=bzcxdDh0MnBqZzVmbDA3NWlwbzBlMTRkaWsgbG9nYW5AbG9nYW5oZW5zb24uY29t', u'sequence': 0, u'updated': u'2013-06-21T18:32:55.986Z', u'summary': u'camp counselor', u'start': {u'dateTime': u'2013-06-26T09:00:00-05:00'}, u'etag': u'"CxZm3kc9PAmVWyOavlumf_6aLhg/MTM3MTgzOTU3NTk4NjAwMA"', u'organizer': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'creator': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'id': u'o71t8t2pjg5fl075ipo0e14dik'}, {u'status': u'confirmed', u'kind': u'calendar#event', u'end': {u'dateTime': u'2013-06-27T13:00:00-05:00'}, u'created': u'2013-06-21T18:33:11.000Z', u'iCalUID': u'dffo6en4efnbjb0tm06ev92en4@google.com', u'reminders': {u'useDefault': True}, u'htmlLink': u'https://www.google.com/calendar/event?eid=ZGZmbzZlbjRlZm5iamIwdG0wNmV2OTJlbjQgbG9nYW5AbG9nYW5oZW5zb24uY29t', u'sequence': 0, u'updated': u'2013-06-21T18:33:11.511Z', u'summary': u'camp counselor', u'start': {u'dateTime': u'2013-06-27T09:00:00-05:00'}, u'etag': u'"CxZm3kc9PAmVWyOavlumf_6aLhg/MTM3MTgzOTU5MTUxMTAwMA"', u'organizer': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'creator': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'id': u'dffo6en4efnbjb0tm06ev92en4'}, {u'status': u'confirmed', u'kind': u'calendar#event', u'end': {u'dateTime': u'2013-06-28T09:00:00-05:00'}, u'created': u'2013-06-21T18:33:21.000Z', u'iCalUID': u'2p6c7u24kbv30acuojbh2ne794@google.com', u'reminders': {u'useDefault': True}, u'htmlLink': u'https://www.google.com/calendar/event?eid=MnA2Yzd1MjRrYnYzMGFjdW9qYmgybmU3OTQgbG9nYW5AbG9nYW5oZW5zb24uY29t', u'sequence': 0, u'updated': u'2013-06-21T18:33:21.986Z', u'summary': u'fitness floor', u'start': {u'dateTime': u'2013-06-28T05:45:00-05:00'}, u'etag': u'"CxZm3kc9PAmVWyOavlumf_6aLhg/MTM3MTgzOTYwMTk4NjAwMA"', u'organizer': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'creator': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'id': u'2p6c7u24kbv30acuojbh2ne794'}, {u'status': u'confirmed', u'kind': u'calendar#event', u'end': {u'dateTime': u'2013-06-28T13:00:00-05:00'}, u'created': u'2013-06-21T18:33:50.000Z', u'iCalUID': u'6ouv43oqi94ogvqam0ldh5pk48@google.com', u'reminders': {u'useDefault': True}, u'htmlLink': u'https://www.google.com/calendar/event?eid=Nm91djQzb3FpOTRvZ3ZxYW0wbGRoNXBrNDggbG9nYW5AbG9nYW5oZW5zb24uY29t', u'sequence': 0, u'updated': u'2013-06-21T18:33:50.756Z', u'summary': u'camp counselor', u'start': {u'dateTime': u'2013-06-28T09:00:00-05:00'}, u'etag': u'"CxZm3kc9PAmVWyOavlumf_6aLhg/MTM3MTgzOTYzMDc1NjAwMA"', u'organizer': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'creator': {u'self': True, u'displayName': u'Logan Henson', u'email': u'logan@loganhenson.com'}, u'id': u'6ouv43oqi94ogvqam0ldh5pk48'}], u'updated': u'2013-06-22T19:58:01.388Z', u'summary': u'logan@loganhenson.com', u'etag': u'"CxZm3kc9PAmVWyOavlumf_6aLhg/8Ps07gFrFoxf7ptkCmaNe4n6omU"',         u'timeZone': u'America/Chicago', u'accessRole': u'owner'}    

并且我成功地提取了“营地辅导员”和“u'dateTime':u'2013-06-24T09:00:00-05:00'”但希望能够提取 dateTime 值...而不是完整的起始值。

我现在拥有的是:(根据我的需要进行了编辑)我正在尝试获取每个日历项目摘要 + 开始 + 结束,并且已经成功但需要获取特定的日期时间而不是 dict 对象。以下给出了 dateTime 的 keyerror

tot = []
val = test["items"]
for a in val:
    Item = calItem(a["summary"], a["start"]["dateTime"], a["end"])
    tot.append(Item)

那么有没有办法获取辅助 JSON dict 值或开始?即我可以做一些事情来达到[“开始”][我想要的键值]的效果吗?

谢谢!

4

2 回答 2

6

是的,您可以堆叠它(如果这是您的要求):

>>> d['items'][1]['start']['dateTime']
u'2013-06-24T09:00:00-05:00'
于 2013-06-23T04:17:12.983 回答
0

对于像我这样的 JSON 新手,我的最终解决方案是:

Item = calItem(a["summary"], a['start'].get('dateTime', a['start'].get('date')), a["end"].get("dateTime", a['start'].get('date')))
于 2013-06-23T15:40:48.747 回答