R - JSON POST 的结构

R - JSON Structure for POST

我已经阅读了我能找到的关于使用 toJSON() 创建 JSONs 的所有内容,但它只是没有点击。任何指导将不胜感激。

我正在尝试为 API 的 POST 请求创建一个 JSON。我正在尝试创建以下结构:

{
  "configuration": {
    "Id": 1,
    "OptionIds": [
            261,
            263,
            533122,
            228  
    ]
  },
  "length": 15000,
  "zip": "92691",
  "Date": "2019-09-11T15:46:31.354Z"
  }

尝试逐个元素分解我可以开始接近,但一旦尝试组合所有内容就永远无法达到最终解决方案。

例如

v_opt_ids <- list(OptionsIds = c(261,
                                 263,
                                 533122,
                                 228))

cat(jsonlite::toJSON(v_opt_ids, pretty=T))

产生:

{
  "OptionsIds": [261, 263, 533122, 228]
}

虽然这不是我在该部分的目标,但与其他元素结合使用时。

config <- data.frame(
      vehicleId = c(444449),
      v_opt_ids)

cat(jsonlite::toJSON(list(configuration = config), pretty=T))

事情很快就会出错..

{
  "configuration": [
    {
      "vehicleId": 444449,
      "OptionsIds": 261
    },
    {
      "vehicleId": 444449,
      "OptionsIds": 263
    },
    {
      "vehicleId": 444449,
      "OptionsIds": 533122
    },
    {
      "vehicleId": 444449,
      "OptionsIds": 228
    }
  ]
}

任何指导将不胜感激。

使用嵌套 lists:

L <- list(
  configuration = list(
    Id = 1,
    OptionIds = c(261, 263, 533122, 228)
  ),
  length = 15000,
  zip = "92691",
  Date = "2019-09-11T15:46:31.354Z"
)

jsonlite::toJSON(L, pretty = TRUE, auto_unbox = TRUE)
# {
#   "configuration": {
#     "Id": 1,
#     "OptionIds": [261, 263, 533122, 228]
#   },
#   "length": 15000,
#   "zip": "92691",
#   "Date": "2019-09-11T15:46:31.354Z"
# } 

(JSON 不需要 pretty=TRUE,只是用它来尝试匹配您的预期输出。auto_unbox=TRUE 确保得到 "Id":1 而不是 "Id":[1],对于大多数使用 json 的东西来说,它在功能上是相同的,有些人认为它是一种更可取的格式。