首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON解码不正确解码php

JSON解码不正确解码php
EN

Stack Overflow用户
提问于 2019-09-05 16:56:46
回答 2查看 180关注 0票数 0

我有一个PHP函数,它与另一个API进行对话,以获取实时列车信息,以便从中获取数据。它进行调用并将XML数据解析为JSON,但是当车站中只有一列火车时,它将以对象而不是数组的形式出现。即使只有一列火车来,我怎么能让它把所有的东西都转换成一个数组呢?

代码语言:javascript
复制
    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);
        }
    }

这是超过一列火车到达车站时的数据外观

这就是只有一个人到达的地方

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-05 17:22:48

你可以自己检查,

代码语言:javascript
复制
if(false !== ($result = json_decode($ir, TRUE))){
    if(isset($result["objStationData"]["Servertime"])){
        $objStationDatas = [$result["objStationData"]];
    }else{
        $objStationDatas = $result["objStationData"];
    }
}
票数 2
EN

Stack Overflow用户

发布于 2019-09-05 17:10:50

在将JSON转换为数组之前,可以检查解析后的XML是数组还是对象。你必须在你的objStationData上这样做,下面的代码只是一个例子

代码语言:javascript
复制
if(!is_array($ir){
    $res ['results'] = json_decode($ir, TRUE);
}else{
    $res ['results'] =  $ir;
}

代码语言:javascript
复制
if(is_object($ir){
    $res ['results'] = json_decode($ir, TRUE);
}else{
    $res ['results'] =  $ir;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57801866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档