【问题标题】:Symfony: iterate through json object to arraySymfony:遍历json对象到数组
【发布时间】:2016-08-11 08:28:17
【问题描述】:

如何遍历每个 Json 对象参数?

我收到 Json 对象作为输入。如何将此对象转换为数组或遍历每个参数?

例子:

 {
  "firstName": "Jane",
  "lastName": "Dow",
  "aboutMe": "Web developer"
 }

在控制器中是否可以执行以下操作:

//$requestData - decoded json content
foreach ($requestData->data as $param){
        //do smth with each param
}

在控制器中,我无法将 json 文件解码为数组,因为我已经接收到 Json 对象作为输入。

【问题讨论】:

  • 您想遍历属性吗?那么 firstname 是数组的第一个元素,lastname 是第二个等等?
  • 将其转换为数组可能会起作用,例如$array = (array) $requestData->data;

标签: php arrays json symfony


【解决方案1】:

您可以使用json_decode()JSON 字符串 解码为数组或对象。像这样,

$json_string="{  "firstName": "Jane",  "lastName": "Dow",  "aboutMe": "Web developer" }";
$json_array=json_decode($json_string,true);

$json_array 将是一个数组,您可以像往常在 PHP 数组 中那样对其进行迭代。

json_decode() 接受第二个参数为布尔值,默认为false。如果是真的 json_decode() 返回一个数组 否则返回对象。

参考:http://php.net/manual/en/function.json-decode.php


你可以像这样遍历 PHP 对象,

foreach ($requestData as $key => $value) {
    echo $key." =>";
    var_dump($value);
}

【讨论】:

  • 这就是诀窍,我没有接收 Json 文件作为输入,而是接收解码的 Json 对象。所以我无法将文件解码为数组
  • 变量中有 JSON 字符串吗?
  • 不,只有 json 对象。将其编码回json字符串并将其解码为数组是否可以?
  • 如果它是一个 JSON 对象,您可以像数组一样直接迭代它。请参阅我的更新答案。
猜你喜欢
  • 1970-01-01
  • 2015-03-13
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
  • 1970-01-01
  • 2015-06-27
  • 2017-11-10
相关资源
最近更新 更多