php更改对象的结构/ json
问题描述:
我正在使用laravel和angular,我正在尝试添加一些图表,现在我需要在特定的结构中为图表插件获取数据,目前我的api会返回像这样的json如下:php更改对象的结构/ 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
}
]
答
这里我们使用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
}
]
}
+0
谢谢你,这对我很有用 –
+0
@RubenMoralesFelix welcome .. :) –
答
$data = []; // new array
foreach($oldArray['data'] as $key => $value){
$data['data'][]['value'] = $value['value'];
}
你有没有尝试过的东西,直到没有? –
显示代码,生成该json – splash58
好吧,那么......你的问题是什么? [**我怎么问一个好问题?**](https://stackoverflow.com/help/how-to-ask) – sidyll