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

Phalcon 4调用getJsonRawBody获取JSON参数时日期出现转义斜杠问题求解

问题产生原因
  • PHP 内置的 json_encode() 函数默认开启了正斜杠转义规则,会自动把 / 转换为 \/,该设计是为了兼容 JSON 嵌入 HTML <script> 标签的场景,避免特殊标签导致解析异常。
  • 你返回完整 $body 对象时看到的日期格式正常属于调试工具的展示优化:实际原始响应的 JSON 中斜杠仍然是转义状态,Chrome 开发者工具、Postman 这类工具会默认把转义后的 \/ 还原为 / 展示,只有查看原始响应内容才能看到转义字符。
解决方案

有两种常用方案可以避免斜杠转义:

  1. 手动给 json_encode() 添加不转义斜杠参数
    调用 json_encode 时传入第二个参数 JSON_UNESCAPED_SLASHES 即可关闭斜杠转义逻辑,修改后代码如下:
public function post(): ResponseInterface
{
    $this->view->disable();

    $body = $this->request->getJsonRawBody();
    return $this->response->setStatusCode(502)->setContent(json_encode($body->birthday, JSON_UNESCAPED_SLASHES));
}
  1. (更推荐)使用 Phalcon 内置的 JSON 响应方法
    Phalcon 提供的 setJsonContent() 方法已经默认配置了符合常用场景的 JSON 编码规则,默认关闭斜杠转义,同时会自动设置 Content-Type: application/json 响应头,不需要手动调用 json_encode:
public function post(): ResponseInterface
{
    $this->view->disable();

    $body = $this->request->getJsonRawBody();
    return $this->response->setStatusCode(502)->setJsonContent($body->birthday);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:45:08