paste0() 在调用 API 时添加转义前反斜杠?
paste0() adds an escape forward backslash in call to API?
我需要使用以下格式动态调用 API:
auth_secret <- paste0("Bearer ", secret)
headers = c(
`Authorization` = auth_secret,
`Notion-Version` = '2022-02-22',
`Content-Type` = 'application/json' )
res <- httr::PATCH(url = paste0('https://api.notion.com/v1/pages/', id),
httr::add_headers(.headers = headers),
body = payload,
encode = "json")
d <- httr::content(res)
此负载有效:
payload <- "{\"properties\":{\"Project\":{\"relation\":[{\"id\":\"1d148a9e-783d-47a7-b3e8-2d9c34210355\"}]}}}"
但是如果我想动态创建它,使用 paste0(所以它在函数内部),我会在前后添加一些反斜杠:
payload <- paste0('"{\"properties\":{\"',property_name,'\":{\"relation\":[{\"id\":\"',value,'\"}]}}}"')
print(payload)
"\"{\"properties\":{\"%7CAK%5E\":{\"relation\":[{\"id\":\"8cb9519e72ca4bbe9e0448807acb8e10\"}]}}}\""
我认为这是由于添加了一些奇怪的转义字符,但 运行 没有想法。我添加了两个 \ 并且遇到了同样的问题。调用失败,因为 JSON 未正确传递。有解决方法吗?
这显然与 paste0
正在转义甚至您不想转义的双引号这一事实有关。
毫无疑问,有人知道细节。然而,当我用 paste0
得到奇怪的东西时,我只使用 sprintf
,这在这种情况下似乎有效:
property_name = "Projects"
value = "1d148a9e-783d-47a7-b3e8-2d9c34210355"
payload <- sprintf(
"{\"properties\":{\"%s\":{\"relation\":[{\"id\":\"%s\"}]}}}",
property_name, value
)
print(payload)
# [1] "{\"properties\":{\"Projects\":{\"relation\":[{\"id\":\"1d148a9e-783d-47a7-b3e8-2d9c34210355\"}]}}}"
我需要使用以下格式动态调用 API:
auth_secret <- paste0("Bearer ", secret)
headers = c(
`Authorization` = auth_secret,
`Notion-Version` = '2022-02-22',
`Content-Type` = 'application/json' )
res <- httr::PATCH(url = paste0('https://api.notion.com/v1/pages/', id),
httr::add_headers(.headers = headers),
body = payload,
encode = "json")
d <- httr::content(res)
此负载有效:
payload <- "{\"properties\":{\"Project\":{\"relation\":[{\"id\":\"1d148a9e-783d-47a7-b3e8-2d9c34210355\"}]}}}"
但是如果我想动态创建它,使用 paste0(所以它在函数内部),我会在前后添加一些反斜杠:
payload <- paste0('"{\"properties\":{\"',property_name,'\":{\"relation\":[{\"id\":\"',value,'\"}]}}}"')
print(payload)
"\"{\"properties\":{\"%7CAK%5E\":{\"relation\":[{\"id\":\"8cb9519e72ca4bbe9e0448807acb8e10\"}]}}}\""
我认为这是由于添加了一些奇怪的转义字符,但 运行 没有想法。我添加了两个 \ 并且遇到了同样的问题。调用失败,因为 JSON 未正确传递。有解决方法吗?
这显然与 paste0
正在转义甚至您不想转义的双引号这一事实有关。
毫无疑问,有人知道细节。然而,当我用 paste0
得到奇怪的东西时,我只使用 sprintf
,这在这种情况下似乎有效:
property_name = "Projects"
value = "1d148a9e-783d-47a7-b3e8-2d9c34210355"
payload <- sprintf(
"{\"properties\":{\"%s\":{\"relation\":[{\"id\":\"%s\"}]}}}",
property_name, value
)
print(payload)
# [1] "{\"properties\":{\"Projects\":{\"relation\":[{\"id\":\"1d148a9e-783d-47a7-b3e8-2d9c34210355\"}]}}}"