php更改object / json的结构

时间:2017-05-04 17:42:45

标签: php arrays json object

我正在使用laravel和angular,我正在尝试添加一些图表,现在我需要在图表插件的特定结构中获取数据,目前我的api返回如下所示的json:

"data": {
    "enero": {
      "value": 50
    },
    "febrero": {
      "value": 130
    },
    "marzo": {
      "value": 220
    },
    "abril": {
      "value": 440
    },
    "mayo": {
      "value": 700
    },
    "junio": null,
    "julio": null,
    "agosto": null,
    "septiembre": null,
    "octubre": null,
    "noviembre": null,
    "diciembre": null
}

预期输出:

"data": [
            {
                "value": "50"
            },
            {
                "value": "130"
            },
            {
                "value": "220"
            },
            {
                "value": "440"
            },
            {
                "value": "700"
            },
            {
                "value": null
            },
            {
                "value": null
            },
            {
                "value": null
            },
            {
                "value": null
            },
            {
                "value": null
            },
            {
                "value": null
            },
            {
                "value": null
            }
        ]

2 个答案:

答案 0 :(得分:0)

$data = []; // new array
foreach($oldArray['data'] as $key => $value){
  $data['data'][]['value'] = $value['value'];
}

答案 1 :(得分:0)

我们正在使用array_map来收集所需的输出。

Try this code snippet here

<?php

$string='{"data": {
    "enero": {
      "value": 50
    },
    "febrero": {
      "value": 130
    },
    "marzo": {
      "value": 220
    },
    "abril": {
      "value": 440
    },
    "mayo": {
      "value": 700
    },
    "junio": null,
    "julio": null,
    "agosto": null,
    "septiembre": null,
    "octubre": null,
    "noviembre": null,
    "diciembre": null
}
}';
$result=array_map(function($value){
    return is_array($value) ? array("value"=>$value["value"]) : array("value"=>$value);
}, json_decode($string,true)["data"]);
$newResult["data"]=array_values($result);
echo json_encode($newResult,JSON_PRETTY_PRINT);

<强>输出:

{
    "data": [
        {
            "value": 50
        },
        {
            "value": 130
        },
        {
            "value": 220
        },
        {
            "value": 440
        },
        {
            "value": 700
        },
        {
            "value": null
        },
        {
            "value": null
        },
        {
            "value": null
        },
        {
            "value": null
        },
        {
            "value": null
        },
        {
            "value": null
        },
        {
            "value": null
        }
    ]
}