[英]php change structure of object / json
I am working with laravel and angular and I am trying to add some charts, now I need to get data in a specific structure for the chart plugin, currently my api returns a json like this one below:
"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
}
预期 output:
"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
}
]
在这里,我们使用array_map
收集所需的输出。
<?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
}
]
}
$data = []; // new array
foreach($oldArray['data'] as $key => $value){
$data['data'][]['value'] = $value['value'];
}
尝试在循环中访问value
时,Null 合并为 null。
代码:(演示)
$result = [];
foreach (json_decode($json)->data as $v) {
$result['data'][]['value'] = $v->value ?? null;
}
echo json_encode($result, JSON_PRETTY_PRINT);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.