【发布时间】:2021-12-31 05:17:03
【问题描述】:
我正在尝试创建一个 JSON 字符串,以从 API(CTUIT 的餐厅 swagger API)发送 POST 请求。
# Load packages ----------------------------------------------
library(tidyverse)
library(httr)
library(jsonlite)
我在 R 中创建了一个要转换为 JSON 的嵌套列表,并使用 jsonlite::toJSON() 来构建 JSON 字符串:
# Nested list
my_list <-
list(grouping = 2,
locationID = 4,
metricID = 1,
startDate = '2021-10-31',
endDate = '2021-10-31',
filters = list(
id = 1,
value = 6)
)
# Convert the list to JSON
my_JSON <- jsonlite::toJSON(my_list,
auto_unbox = TRUE,
pretty = TRUE)
my_JSON
结果如下:
{
"grouping": 2,
"locationID": 4,
"metricID": 1,
"startDate": "2021-10-31",
"endDate": "2021-10-31",
"filters": {
"id": 1,
"value": 6
}
}
我需要弄清楚如何做是在“过滤器”元素周围添加方括号 [] 以匹配 API 文档。根据 API 说明,这需要如下所示:
[
{
"grouping": 2,
"locationID": 4,
"metricID": 1,
"startDate": "2021-10-31",
"endDate": "2021-10-31",
"filters": [
{
"id": 1,
"value": [
6
]
}
]
}
]
jsonlite 包可以做到这一点吗?
我不确定方括号的术语,但我可以使用 paste0() 轻松地将它们添加到完整 JSON 字符串的任一侧。我试图弄清楚如何获取 JSON 内部元素的方括号。特别是嵌套的“过滤器”元素。
谢谢
【问题讨论】:
-
使用列表列表。如果未命名,列表将使用
[]进行编码,如果已命名,则列表将使用{}:filters = list(list(id = 1, value = 6)) -
感谢弗利克先生的解释!有道理。