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

Symfony中解析Postman请求体JSON数据失败的问题咨询

问题原因及解决方案

问题1:直接访问$data['informations']报错的原因

$request->getContent()返回的是原始JSON字符串,并非PHP数组或对象,直接用数组索引访问字符串会触发「Illegal string offset」错误,必须先将JSON字符串解析为PHP可操作的数组/对象。

问题2:json_decode返回NULL的原因

你的请求体JSON存在两处语法/规范问题:

  • JSON强制要求所有字符串必须用双引号包裹,但你用了单引号'email@email.fr',违反JSON语法规范。
  • 字段phone的值0111111111是带前导零的数字,JSON中这种写法会被解析器视为八进制数,部分解析器不支持,且电话号码作为数值存储会丢失前导零,建议改为字符串类型。

解决方案

1. 修正Postman中的请求体JSON

将单引号改为双引号,同时把phone字段改为字符串:

{"informations" : {"contact" :[{"email" : "email@email.fr","phone" : "0111111111"}]}}

2. Symfony端正确解析数据

方式一:手动解析JSON

$jsonContent = $request->getContent();
$data = json_decode($jsonContent, true);

// 检查解析是否成功
if ($data === null) {
    throw new \RuntimeException('JSON解析失败:' . json_last_error_message());
}

dd($data['informations']['contact']);

方式二:利用Symfony框架自动解析

确保Postman发送请求时,请求头设置Content-Type: application/json,然后可以直接使用框架提供的方法获取解析后的数组:

$data = $request->toArray();
// 或者 $data = $request->request->all();
dd($data['informations']['contact']);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:35:35