Retrive Json Data,重新格式化并创建新端点

时间:2018-03-17 22:57:30

标签: javascript php json rest web

British Air quality等公共API获取一些Json数据的最佳方法是什么,并创建一个新端点,其中一些数据的名称不同,如

{ 
  "data":[{ 
    "from": "2018-03-17T22:00Z",
    "to": "2018-03-17T22:30Z",
    "intensity": {
      "forecast": 251,
      "actual": 250,
      "index": "moderate"
    }
  }]
}

对此(我正在删除一些我不需要的信息)

{
"Weather": [
   {"newName": "forecastValue"},
   {"newName2": "ActualValue"}
 ]
}

我正面临这个问题,因为我正在使用第三方应用程序,如果它的格式是这样的话,它只支持Json(2个值和特殊名称)......

非常感谢您提前寻求帮助!

3 个答案:

答案 0 :(得分:0)

这给出了一个稍微不同的json字符串作为输出,但我会说它比你的建议更有用

<?php
$in = '{
  "data":[{
    "from": "2018-03-17T22:00Z",
    "to": "2018-03-17T22:30Z",
    "intensity": {
      "forecast": 251,
      "actual": 250,
      "index": "moderate"
    }
  }]
}';

$jin = json_decode($in);

$out = [];

$out = new stdClass();
$out->weather = ['newName'=>$jin->data[0]->intensity->forecast,
                 'newName2' =>$jin->data[0]->intensity->actual
                ];
$out = json_encode($out);

echo $out;

结果

{"weather":{"newName":251,"newName2":250}}

答案 1 :(得分:0)

假设a)您在问题上添加的JavaScript标记意味着您希望它在JavaScript中,并且b)您的JSON位于名为jsonData的变量中...

var dataObj = JSON.parse(jsonData);
var intensityData = dataObj.data[0].intensity;
var outputData = {forecast: intensityData.forecast, actual: intensityData.actual};
var jsonOutput = JSON.stringify(outputData);

答案 2 :(得分:0)

JavaScript解决方案:

var orginalJSON = { 
  "data":[{ 
    "from": "2018-03-17T22:00Z",
    "to": "2018-03-17T22:30Z",
    "intensity": {
      "forecast": 251,
      "actual": 250,
      "index": "moderate"
    }
  }]
};

var newJSON = {
"Weather": [
   {"newName": orginalJSON.data[0].intensity.forecast},
   {"newName2": orginalJSON.data[0].intensity.actual}
 ]
};

console.log(newJSON);