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

如何在R中将数据表转换为符合Qualtrics API要求的JSON格式?

解决Qualtrics批量删除响应API的JSON格式问题

你遇到的核心问题是构建请求体时列表结构错误,导致生成的JSON不符合Qualtrics API的要求。下面是修正后的代码,同时保留你从Excel复制粘贴响应ID的输入方式:

修正后的完整代码

install.packages(c("httr", "jsonlite"))
library(httr)
library(jsonlite)

# 保留原输入方式:直接粘贴Excel的响应ID
data <- read.table(text='
R_010101010101010
R_010101010101010
R_010101010101010
R_010101010101010
R_010101010101010
')
colnames(data) <- 'responseId'

# 正确构建包含多个响应对象的列表
allResponses <- lapply(1:nrow(data), function(row) {
  list(
    responseId = as.character(data[row, 1]),  # 确保是字符类型,避免自动转换问题
    decrementQuotas = TRUE
  )
})

# 生成符合API要求的JSON,auto_unbox避免单个值被包装为数组
postData <- toJSON(
  list(deletes = allResponses),
  auto_unbox = TRUE,
  pretty = TRUE  # 可选:格式化JSON方便查看结构
)
print(postData)

关键修正点

  1. 列表结构构建:
    原代码中append(allResponses, response)会把每个response的键值对拆分开,导致最终列表扁平化。改用lapply直接生成包含多个子列表的数组结构,每个子列表对应一个响应的删除配置,完美匹配API需要的数组嵌套格式。

  2. JSON序列化参数:
    添加auto_unbox = TRUE参数,避免将单个字符串/布尔值包装为JSON数组(比如原代码中出现的"responseId": ["R_xxx"]会变成"responseId": "R_xxx"),完全贴合API要求的格式。

修正后的JSON输出

生成的JSON会和API要求的结构完全一致:

{
  "deletes": [
    {
      "responseId": "R_010101010101010",
      "decrementQuotas": true
    },
    {
      "responseId": "R_010101010101010",
      "decrementQuotas": true
    }
    // 其他响应对象...
  ]
}

补充:完整POST请求调用(可选)

如果需要直接调用API,可添加以下代码(替换你的Qualtrics配置信息):

# Qualtrics API配置
api_key <- "YOUR_QUALTRICS_API_KEY"
survey_id <- "YOUR_SURVEY_ID"
base_url <- "https://yourdatacenter.qualtrics.com/API/v3/surveys"  # 替换为你的数据中心域名

# 发送POST请求
response <- POST(
  url = paste0(base_url, "/", survey_id, "/responseBulkDeletes"),
  add_headers(
    "X-API-TOKEN" = api_key,
    "Content-Type" = "application/json"
  ),
  body = postData
)

# 查看响应结果
cat(content(response, "text", encoding = "UTF-8"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 21:43:22