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
相关产品推荐
相关产品推荐

