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

PHP cURL发送JSON时如何去掉ID数组字符串外层的双引号?

问题原因

你当前存储ID的$available_cat_id_list、$available_rate_ids_list是字符串类型,而非PHP原生数组类型。调用json_encode()生成JSON时,字符串类型的值会被自动包裹双引号,最终生成的payload里数组结构被当成字符串处理,不符合API的参数格式要求。

解决方法

先将两个字符串格式的ID列表转换为PHP原生数组,再放入请求参数中即可。你可以直接用json_decode()处理这两个字符串,因为它们本身就是合法的JSON数组格式:

// 先将字符串转成PHP数组,第二个参数true表示返回数组而非对象
$categoryIds = json_decode($available_cat_id_list, true);
$rateIds = json_decode($available_rate_ids_list, true);

// 构造请求数据
$griddata = array(
  "agentId"=>'2',
  "categoryIds"=>$categoryIds,
  "dateFrom"=>'2021-12-11',
  "dateTo"=>'2021-12-18',
  "propertyId"=>'1',
  "rateIds"=>$rateIds
);

// 正常json_encode即可得到符合要求的payload
$payload = json_encode($griddata);

如果你的ID列表字符串是不带括号的逗号分隔格式(比如15,16,17,18),可以用explode(',', $available_cat_id_list)转成数组,再按需把元素转成整型即可。

生成的正确Payload示例

调整后生成的JSON会自动去掉categoryIds、rateIds外层的双引号,符合API要求:

{
  "agentId":"2",
  "categoryIds":[15, 16, 17, 18],
  "dateFrom":"2021-12-11",
  "dateTo":"2021-12-18",
  "propertyId":"1",
  "rateIds":[7, 8, 9, 19, 20]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:54:00