JSON 解码不正确 php
JSON decode not decoding correctly php
我有一个 PHP 函数可以与另一个 API 对话以获取实时火车信息以从中获取数据。它进行调用并将 XML 数据解析为 JSON 但是当车站只有一列火车时,它将作为对象而不是数组出现。即使只有一列火车开过来,我怎样才能让它把所有东西都转换成一个数组。
public function getStationsByName(Request $request)
{
try {
$stationName = $request->input('id');
$url = "http://api.irishrail.ie//realtime/realtime.asmx/getStationDataByNameXML?StationDesc=";
$url .= $stationName;
$res['status'] = true;
$res['message'] = 'Success';
$ir = xmlparser::Parse($url);
$res ['results'] = json_decode($ir, TRUE);
$res['num_rows'] = count($res['results']);
return response($res, 200);
} catch (\Illuminate\Database\QueryException $ex) {
$res['status'] = false;
$res['message'] = $ex->getMessage();
return response($res, 500);
}
}
这是不止一列火车到达车站时的数据
而且这里只有一个到达
在将 JSON 转换为数组之前,您可以检查解析后的 XML 是数组还是对象。您必须在您的 objStationData 上执行此操作,下面的代码只是一个示例
if(!is_array($ir){
$res ['results'] = json_decode($ir, TRUE);
}else{
$res ['results'] = $ir;
}
或
if(is_object($ir){
$res ['results'] = json_decode($ir, TRUE);
}else{
$res ['results'] = $ir;
}
大家可以自行查看,
if(false !== ($result = json_decode($ir, TRUE))){
if(isset($result["objStationData"]["Servertime"])){
$objStationDatas = [$result["objStationData"]];
}else{
$objStationDatas = $result["objStationData"];
}
}
我有一个 PHP 函数可以与另一个 API 对话以获取实时火车信息以从中获取数据。它进行调用并将 XML 数据解析为 JSON 但是当车站只有一列火车时,它将作为对象而不是数组出现。即使只有一列火车开过来,我怎样才能让它把所有东西都转换成一个数组。
public function getStationsByName(Request $request)
{
try {
$stationName = $request->input('id');
$url = "http://api.irishrail.ie//realtime/realtime.asmx/getStationDataByNameXML?StationDesc=";
$url .= $stationName;
$res['status'] = true;
$res['message'] = 'Success';
$ir = xmlparser::Parse($url);
$res ['results'] = json_decode($ir, TRUE);
$res['num_rows'] = count($res['results']);
return response($res, 200);
} catch (\Illuminate\Database\QueryException $ex) {
$res['status'] = false;
$res['message'] = $ex->getMessage();
return response($res, 500);
}
}
这是不止一列火车到达车站时的数据
而且这里只有一个到达
在将 JSON 转换为数组之前,您可以检查解析后的 XML 是数组还是对象。您必须在您的 objStationData 上执行此操作,下面的代码只是一个示例
if(!is_array($ir){
$res ['results'] = json_decode($ir, TRUE);
}else{
$res ['results'] = $ir;
}
或
if(is_object($ir){
$res ['results'] = json_decode($ir, TRUE);
}else{
$res ['results'] = $ir;
}
大家可以自行查看,
if(false !== ($result = json_decode($ir, TRUE))){
if(isset($result["objStationData"]["Servertime"])){
$objStationDatas = [$result["objStationData"]];
}else{
$objStationDatas = $result["objStationData"];
}
}