JSON解码未正确解码php

JSON解码未正确解码php,php,lumen,Php,Lumen,我有一个PHP函数,它与另一个API对话,以获取实时列车信息,从而从中获取数据。它进行调用并将XML数据解析为JSON,但当车站中只有一列火车时,它将显示为对象而不是数组。即使只有一列火车来,我如何让它将所有的东西都转换成一个数组 public function getStationsByName(Request $request) { try { $stationName = $request->input('id');

我有一个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;
}


在将JSON转换为数组之前,您可以检查解析的XML是数组还是对象。您必须在objStationData上执行此操作,下面的代码只是一个示例

if(!is_array($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"];
    }
}

你可以自己检查一下

if(false !== ($result = json_decode($ir, TRUE))){
    if(isset($result["objStationData"]["Servertime"])){
        $objStationDatas = [$result["objStationData"]];
    }else{
        $objStationDatas = $result["objStationData"];
    }
}

您能否提供
$ir
的内容而不是json阅读器的图片?请尝试更改
$ir=xmlparser::Parse($url)
$ir=json_解码(json_编码(xmlparser::Parse($url)),true)发布实际数据,而不是屏幕截图。如果您的屏幕截图可信,那么您的JSON就不是JSON。如果它正在序列化一个对象,那么它应该被
{
}
字符包围,即:
{“结果”:{…}
你能提供
$ir
的内容而不是json阅读器的图片吗?尝试更改
$ir=xmlparser::Parse($url)
$ir=json_解码(json_编码(xmlparser::Parse($url)),true)发布实际数据,而不是屏幕截图。如果您的屏幕截图可信,那么您的JSON就不是JSON。如果它正在序列化一个对象,那么它应该被
{
}
字符包围,即:
{“结果”:{…}