我需要使用以下格式動態呼叫 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\":{\"|AK^\":{\"relation\":[{\"id\":\"8cb9519e72ca4bbe9e0448807acb8e10\"}]}}}\""
我認為這是由于添加了一些奇怪的轉義字符,但已經沒有想法了。我添加了兩個 \ 并遇到了同樣的問題。呼叫失敗,因為 JSON 未正確傳遞。有解決方法嗎?
uj5u.com熱心網友回復:
這顯然與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\"}]}}}"
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/444812.html
