symfony PHP用嵌套集合检索对象并将其用于PHP代码

bfnvny8b  于 2023-03-19  发布在  PHP
关注(0)|答案(1)|浏览(93)

我有这样的请求体:

{
   "title": "foo",
   "colors": [{
       "name": "green"
   }, {
       "name": "red"
   },{
       "name": "pink"
   }]
}

这是一个从POSTMAN发送的示例请求主体。我在PHP后端有一个方法可以获取请求主体。到目前为止,我所拥有的是:

use Symfony\Component\HttpFoundation\Request;

public function test (Request $request)
{
    $data = json_decode($request->getContent(), false);
    
    dd($data->title); // foo
}

它只对一个对象有效,但当我尝试$data->colors时,结果却不同。a:1:{i:0;s:2:"green";i:1;s:2:"red";i:2;s:2:"pink"}
我期望得到的字符串结果如下所示:[{"name": "green"}, ... ]
基本上,我需要的是得到正确的集合字符串。需要帮助吗?

bweufnob

bweufnob1#

true作为json_decode()的第二个参数传递,要求它从输入JSON中找到的对象生成关联数组(而不是PHP对象)。PHP数组比对象更通用,处理起来也更容易。

$input = '{
   "title": "foo",
   "colors": [{
       "name": "green"
   }, {
       "name": "red"
   },{
       "name": "pink"
   }]
}';

$data = json_decode($input, true);

foreach ($data['colors'] as $color) {
  echo("${color['name']}\n");
}

输出为:

green
red
pink

看它online
如果您需要将colors属性的值作为JSON,则只需使用json_encode($data['colors'])将其编码为JSON即可。

相关问题