使用 R 的 httr 包的 POST 请求正文中缺少方括号



我正在使用 R 包 httr 发送 POST 请求。我知道 reqeust 的主体应该是什么样子,但我无法使用 httr 创建它。我总是缺少一对方括号(见下文(。

如何修改 R 代码才能获得所需的结果?

这是 R POST 片段

cells <- c("Dimensions('Time')/Hierarchies('Time')/Elements('ABC')",
"Dimensions('Currency')/Hierarchies('Currency')/Elements('USD')")
value <- 123
with_verbose(
httr::POST(
url = url,
config = httr::config(ssl_verifypeer = FALSE, ssl_verifyhost = FALSE),
body = list(Cells = list(`Tuple@odata.bind` = cells), Value = value),
content_type("application/json"),
encode = "json",
set_cookies(...),
handle = handle
) %>% httr::content()
) 

要发送的所需正文:

{
"Cells":[
{"Tuple@odata.bind":[
"Dimensions('Time')/Hierarchies('Time')/Elements('ABC')",
"Dimensions('Currency')/Hierarchies('Currency')/Elements('USD')"
]}
],
"Value":"123"
}

发送的实际正文:

{
"Cells": ######### Missing bracket here #######
{"Tuple@odata.bind":[ 
"Dimensions('Time')/Hierarchies('Time')/Elements('ABC')",
"Dimensions('Currency')/Hierarchies('Currency')/Elements('USD')"
]},
####### Missing bracket here #######
"Value":"123"
}

你快到了,只需添加另一级别的列表Cells

library(magrittr)
library(jsonlite)
cells <- c("Dimensions('Time')/Hierarchies('Time')/Elements('ABC')",
"Dimensions('Currency')/Hierarchies('Currency')/Elements('USD')")
value <- 123
list(Cells = list(`Tuple@odata.bind` = cells), Value = value) %>%
toJSON() %>%
prettify()
#> {
#>     "Cells": {
#>         "Tuple@odata.bind": [
#>             "Dimensions('Time')/Hierarchies('Time')/Elements('ABC')",
#>             "Dimensions('Currency')/Hierarchies('Currency')/Elements('USD')"
#>         ]
#>     },
#>     "Value": [
#>         123
#>     ]
#> }
#> 
list(Cells = list(list(`Tuple@odata.bind` = cells)), Value = value) %>%
toJSON() %>%
prettify()
#> {
#>     "Cells": [
#>         {
#>             "Tuple@odata.bind": [
#>                 "Dimensions('Time')/Hierarchies('Time')/Elements('ABC')",
#>                 "Dimensions('Currency')/Hierarchies('Currency')/Elements('USD')"
#>             ]
#>         }
#>     ],
#>     "Value": [
#>         123
#>     ]
#> }
#> 

创建于 2018-09-23 由 reprex 软件包 (v0.2.1(

最新更新