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

如何移除tibble转JSON代码中data段的多余括号?

问题:调整R数据结构生成指定格式JSON

运行给定R代码生成的JSON中,data节点下的a、b字段被数组括号[]包裹,但期望这两个字段直接输出多个对象(去掉[]),同时fun_example字段保留数组括号。要求通过调整输入数据结构实现,无需事后修改JSON。

当前输出JSON

{
  "data": {
      "a": [
        {
          "second": 1
        },
        {
          "second": 2
        }
      ],
      "b": [
        {
          "second": 1
        },
        {
          "second": 2
        }
      ]
    },
  "fun_example": [
    {
      "hi": 1,
      "world": 2
    }
  ]
}

期望输出JSON

{
  "data": {
      "a": 
        {
          "second": 1
        },
        {
          "second": 2
        }
      ,
      "b": 
        {
          "second": 1
        },
        {
          "second": 2
        }
      
    },
  "fun_example": [
    {
      "hi": 1,
      "world": 2
    }
  ]
}

原R代码

list(
  data = tibble::tibble(
    first = c("a", "a", "b", "b"),
    second = c(1, 2, 1, 2)
  ) |>
    tidyr::nest(.by = first) |>
    tidyr::pivot_wider(
      names_from = first,
      values_from = data
    ) |>
    jsonlite::unbox(),
  fun_example=tibble(hi=1,
                     world=2)
)|>
  jsonlite::toJSON(pretty = T, auto_unbox = T)

说明与解决方案

首先要明确:你期望的输出格式不符合JSON规范——JSON对象的属性值必须是单个合法元素(对象、数组、字符串等),不能直接并列多个对象。标准JSON解析器根本无法解析这种格式,如果你是笔误,实际想去掉数组括号但保留数组语义,这在JSON里是不可能的,所有数组必须用[]包裹。

如果确实要生成你展示的非标准格式,可通过调整数据结构实现,修改后的代码如下:

library(tibble)
library(tidyr)
library(jsonlite)
library(purrr)

# 重新处理数据:将分组后的内容拆为无数组包裹的对象集合
processed_data <- tibble(
    first = c("a", "a", "b", "b"),
    second = c(1, 2, 1, 2)
) %>%
    group_by(first) %>%
    group_split() %>%  # 按first拆分为独立分组列表
    purrr::map(function(x) {
        # 转换为无名称的对象列表,避免被包裹为数组
        x %>% select(-first) %>% purrr::transpose() %>% unname()
    }) %>%
    setNames(c("a", "b"))

# 构造最终列表并生成JSON
list(
    data = processed_data %>% unbox(),
    fun_example = tibble(hi=1, world=2)
) %>%
    toJSON(pretty = TRUE, auto_unbox = FALSE, force = TRUE)

注意:这段代码生成的输出是非标准JSON,仅能满足你展示的格式需求,无法被正常JSON工具解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:37:18