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

是否有可输出JSON数组的JSON.dump替代方案以适配Zendesk API要求?

你对JSON.dump的行为存在误解:HTTP 请求的请求体本身仅支持传输字符串格式数据,JSON.dump() 将数组转为JSON格式字符串是完全符合要求的操作,这不是触发500错误的原因。问题大概率出在请求结构或者认证配置不符合接口要求,你可以从以下几个方向排查修复:

  • 负载结构不符合接口要求:Zendesk 批量更新宏的接口不支持直接将数组作为根节点传参,需要在外层嵌套macros字段,正确的结构为{"macros": [你的宏数据数组]}
  • 请求URL不完整:你当前填写的URL缺少https://前缀,且需要替换为你自己的Zendesk子域名
  • 认证配置错误:你当前的Authorization头仅填写了Basic =,不符合Basic认证规则,你需要将{你的邮箱}/token:{你的API令牌} 做Base64编码后,替换等号位置的内容,格式为Basic {生成的Base64字符串}

修复后代码示例

def call_api
  # 构造符合接口要求的负载结构
  payload = { macros: @data }
  # 替换为你的Zendesk子域名,补全https前缀
  url = URI("https://<你的子域名>.zendesk.com/api/v2/macros/update_many")

  https = Net::HTTP.new(url.host, url.port)
  https.use_ssl = true

  request = Net::HTTP::Put.new(url)
  # 替换为正确的认证字符串
  request["Authorization"] = "Basic <你生成的Base64认证串>"
  request["Content-Type"] = "application/json"
  request.body = JSON.dump(payload)
  
  # 可选:打印请求、响应内容辅助排查
  p "请求体内容:#{request.body}"
  response = https.request(request)
  p "响应状态码:#{response.code}"
  p "响应详情:#{response.body}"
end

如果修改后仍然报错,可以先打印接口返回的完整响应内容,500错误的响应体一般会标注具体的错误原因(比如字段缺失、权限不足等),可以根据提示进一步调整参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:36:04