You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中使用jsonlite包生成带嵌套方括号结构的JSON字符串的问题

完全可以通过jsonlite原生功能实现,不需要手动用paste0拼接字符串。你提到的方括号是JSON中的**数组(Array)**类型,只要调整R列表的嵌套结构即可匹配要求。

调整后的代码实现

你只需要在需要生成数组的位置,额外套一层list()即可:

# Load packages ----------------------------------------------
library(tidyverse)
library(httr)
library(jsonlite)

# 调整后的嵌套列表:需要生成数组的位置额外套一层list()
my_list <- list(
  # 最外层套list,对应整个JSON外侧的[]
  list(
    grouping = 2,
    locationID = 4,
    metricID = 1,
    startDate = '2021-10-31',
    endDate = '2021-10-31',
    # filters额外套一层list,对应filters外侧的[]
    filters = list(
      list(
        id = 1,
        # value额外套一层list,对应value外侧的[]
        value = list(6)
      )
    )
  )
)

# 转换为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
        ]
      }
    ]
  }
] 

原理说明

  • 直接写list(id = 1, value = 6)会被jsonlite识别为单个JSON对象(仅用大括号{}包裹)
  • 写成list(list(id = 1, value = 6))相当于R列表内嵌套了一个子列表,会被识别为包含1个对象的JSON数组,自动添加方括号[]
  • 不建议手动拼接字符串,遇到特殊字符(比如引号、转义符)时极易出现格式错误,用原生列表结构转换是最稳妥的方案

内容的提问来源于stack exchange,提问作者Chris Kiniry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:15:11