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

PHP CURL发送JSON请求疑问:为何仅转义字符串可适配API的updateRecord数组

解决PHP cURL POST JSON请求的规范写法

嘿,我完全懂你手动写转义JSON字符串的痛苦——不仅容易写错,后期维护也麻烦!其实用PHP自带的函数就能轻松搞定,不用再手动转义引号,下面是规范的实现步骤:

步骤1:构造PHP数组

先把要发送的数据用普通的PHP关联数组来表示,这样可读性强,修改也方便:

// 构造请求数据的PHP数组
$postData = [
    'updateRecord' => [
        [
            'fielda' => '77777',
            'fieldb' => '11.77',
            'fieldc' => '你的字段值' // 替换成实际内容
        ]
        // 如果需要多条记录,直接添加新的关联数组即可
    ]
];

步骤2:转换为JSON字符串

用json_encode()函数把PHP数组转换成标准的JSON字符串,这个函数会自动处理所有需要转义的字符,比手动写可靠多了:

$jsonData = json_encode($postData);

// 可选:如果转换失败,可以排查错误
if ($jsonData === false) {
    die('JSON转换错误: ' . json_last_error_msg());
}

步骤3:配置cURL并发送请求

重点是要设置正确的请求头,告诉服务器你发送的是JSON格式的数据,然后把转换好的JSON字符串传给CURLOPT_POSTFIELDS:

$ch = curl_init();

// 基础配置
curl_setopt($ch, CURLOPT_URL, "http://url.com/update");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 获取返回结果而不是直接输出

// 关键:设置JSON请求头
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Content-Length: ' . strlen($jsonData) // 部分API需要这个头来验证请求长度
]);

// 传入JSON格式的请求体
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);

// 执行请求并处理结果
$response = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'CURL请求错误: ' . curl_error($ch);
}
curl_close($ch);

// 查看响应结果
var_dump($response);

为什么之前的转义字符串能成功?

你之前手动写的转义字符串本质是合法的JSON格式,所以API能识别。但如果直接把PHP数组传给CURLOPT_POSTFIELDS,cURL默认会把它转换成application/x-www-form-urlencoded格式(类似表单提交的键值对),而你的API期望的是JSON格式的请求体,所以就会失败。

用上面的方法,既不用手动转义,又能保证请求格式符合API要求,后期修改数据也更方便~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:59:07