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

使用httr::POST发送JSON时单元素向量解包问题的咨询

解决httr POST单元素向量JSON编码丢失数组括号的问题

问题原因

httr的encode = "json"依赖jsonlite包处理JSON编码,默认会将长度为1的向量自动"解包"为单个值,导致原本应该是数组格式的[100]变成了100,不符合API的数组格式要求。

解决方案

用I()函数(即AsIs类)包裹需要保留数组格式的单元素向量,明确告诉jsonlite不要简化该向量的结构。

修改后的代码

my_list <- list(
  list(ids = I(c(100)))
)
names(my_list) <- "Example"

responseList <- httr::POST(url = url_endpoint, 
                           body = my_list, encode = "json", httr::verbose())

验证结果

此时verbose输出的JSON内容会是{"Example":{"ids":[100]}},数组括号被保留,符合API的格式要求。

替代方案(手动编码JSON)

如果需要更精细控制JSON编码,也可以用jsonlite的toJSON函数手动生成JSON字符串,设置auto_unbox = FALSE禁止自动解包,再通过httr发送:

library(jsonlite)

my_list <- list(
  list(ids = c(100))
)
names(my_list) <- "Example"

# 手动生成JSON,保留数组结构
my_json <- toJSON(my_list, auto_unbox = FALSE)

responseList <- httr::POST(url = url_endpoint, 
                           body = my_json, encode = "raw", httr::verbose())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:31:43