如何以编程方式将另一个项目插入 body?
How to insert another item programmatically into body?
我正在尝试通过 Python 3.8 向 Google 日历 API 构建一个 free/busy body 请求。但是,当我尝试向 body 请求中插入新项目时,我遇到了一个错误的请求并且无法使用它。
此代码有效:
SUBJECTA = '3131313636@resource.calendar.google.com'
SUBJECTB = '34343334@resource.calendar.google.com'
body = {
"timeMin": now,
"timeMax": nownext,
"timeZone": 'America/New_York',
"items": [{'id': SUBJECTA},{"id": SUBJECTB} ]
}
好Body结果:
{'timeMin': '2019-11-05T11:42:21.354803Z',
'timeMax': '2019-11-05T12:42:21.354823Z',
'timeZone': 'America/New_York',
'items': [{'id': '131313636@resource.calendar.google.com'},
{'id': '343334@resource.calendar.google.com'}]}
但是,
使用此代码时:
items = "{'ID': '1313636@resource.calendar.google.com'},{'ID': '3383137@resource.calendar.google.com'},{'ID': '383733@resource.calendar.google.com'}"
body = {
"timeMin": now,
"timeMax": nownext,
"timeZone": 'America/New_York',
"items": items
}
Body 结果在开始和结束位置包含额外的引号,请求失败:
{'timeMin': '2019-11-05T12:04:41.189784Z',
'timeMax': '2019-11-05T13:04:41.189804Z',
'timeZone': 'America/New_York',
'items': ["{'ID': 13131313636@resource.calendar.google.com},{'ID':
53333383137@resource.calendar.google.com},{'ID':
831383733@resource.calendar.google.com},{'ID':
33339373237@resource.calendar.google.com},{'ID':
393935323035@resource.calendar.google.com}"]}
如何正确处理并准确发送物品清单?
- 在您的情况下,
items
的值由 "{'ID': '1313636@resource.calendar.google.com'},{'ID': '3383137@resource.calendar.google.com'},{'ID': '383733@resource.calendar.google.com'}"
的字符串给出。
- 您想通过使用 python 解析字符串值来用作对象。
- 您期望的结果值为
[{'ID': '1313636@resource.calendar.google.com'}, {'ID': '3383137@resource.calendar.google.com'}, {'ID': '383733@resource.calendar.google.com'}]
。
- 您已经可以使用 Calender API。
如果我的理解是正确的,这个答案怎么样?请将此视为几个答案之一。
示例脚本:
import json # Added
items = "{'ID': '1313636@resource.calendar.google.com'},{'ID': '3383137@resource.calendar.google.com'},{'ID': '383733@resource.calendar.google.com'}"
items = json.loads(("[" + items + "]").replace("\'", "\"")) # Added
body = {
"timeMin": now,
"timeMax": nownext,
"timeZone": 'America/New_York',
"items": items
}
print(body)
结果:
如果now
和nownext
分别是"now"
和"nownext"
的值,则结果如下
{
"timeMin": "now",
"timeMax": "nownext",
"timeZone": "America/New_York",
"items": [
{
"ID": "1313636@resource.calendar.google.com"
},
{
"ID": "3383137@resource.calendar.google.com"
},
{
"ID": "383733@resource.calendar.google.com"
}
]
}
注:
如果您可以检索 ID 作为字符串值,我推荐以下方法作为示例脚本。
ids = ['1313636@resource.calendar.google.com', '3383137@resource.calendar.google.com', '383733@resource.calendar.google.com']
items = [{'ID': id} for id in ids]
如果我误解了您的问题而这不是您想要的结果,我深表歉意。
我正在尝试通过 Python 3.8 向 Google 日历 API 构建一个 free/busy body 请求。但是,当我尝试向 body 请求中插入新项目时,我遇到了一个错误的请求并且无法使用它。
此代码有效:
SUBJECTA = '3131313636@resource.calendar.google.com'
SUBJECTB = '34343334@resource.calendar.google.com'
body = {
"timeMin": now,
"timeMax": nownext,
"timeZone": 'America/New_York',
"items": [{'id': SUBJECTA},{"id": SUBJECTB} ]
}
好Body结果:
{'timeMin': '2019-11-05T11:42:21.354803Z',
'timeMax': '2019-11-05T12:42:21.354823Z',
'timeZone': 'America/New_York',
'items': [{'id': '131313636@resource.calendar.google.com'},
{'id': '343334@resource.calendar.google.com'}]}
但是, 使用此代码时:
items = "{'ID': '1313636@resource.calendar.google.com'},{'ID': '3383137@resource.calendar.google.com'},{'ID': '383733@resource.calendar.google.com'}"
body = {
"timeMin": now,
"timeMax": nownext,
"timeZone": 'America/New_York',
"items": items
}
Body 结果在开始和结束位置包含额外的引号,请求失败:
{'timeMin': '2019-11-05T12:04:41.189784Z',
'timeMax': '2019-11-05T13:04:41.189804Z',
'timeZone': 'America/New_York',
'items': ["{'ID': 13131313636@resource.calendar.google.com},{'ID':
53333383137@resource.calendar.google.com},{'ID':
831383733@resource.calendar.google.com},{'ID':
33339373237@resource.calendar.google.com},{'ID':
393935323035@resource.calendar.google.com}"]}
如何正确处理并准确发送物品清单?
- 在您的情况下,
items
的值由"{'ID': '1313636@resource.calendar.google.com'},{'ID': '3383137@resource.calendar.google.com'},{'ID': '383733@resource.calendar.google.com'}"
的字符串给出。 - 您想通过使用 python 解析字符串值来用作对象。
- 您期望的结果值为
[{'ID': '1313636@resource.calendar.google.com'}, {'ID': '3383137@resource.calendar.google.com'}, {'ID': '383733@resource.calendar.google.com'}]
。
- 您期望的结果值为
- 您已经可以使用 Calender API。
如果我的理解是正确的,这个答案怎么样?请将此视为几个答案之一。
示例脚本:
import json # Added
items = "{'ID': '1313636@resource.calendar.google.com'},{'ID': '3383137@resource.calendar.google.com'},{'ID': '383733@resource.calendar.google.com'}"
items = json.loads(("[" + items + "]").replace("\'", "\"")) # Added
body = {
"timeMin": now,
"timeMax": nownext,
"timeZone": 'America/New_York',
"items": items
}
print(body)
结果:
如果now
和nownext
分别是"now"
和"nownext"
的值,则结果如下
{
"timeMin": "now",
"timeMax": "nownext",
"timeZone": "America/New_York",
"items": [
{
"ID": "1313636@resource.calendar.google.com"
},
{
"ID": "3383137@resource.calendar.google.com"
},
{
"ID": "383733@resource.calendar.google.com"
}
]
}
注:
如果您可以检索 ID 作为字符串值,我推荐以下方法作为示例脚本。
ids = ['1313636@resource.calendar.google.com', '3383137@resource.calendar.google.com', '383733@resource.calendar.google.com'] items = [{'ID': id} for id in ids]
如果我误解了您的问题而这不是您想要的结果,我深表歉意。