dsbpaqt61965 2013-06-16 00:54
浏览 33
已采纳

将Web Service数组转换为JSON数据[关闭]

I'm trying to convert this result array into JSON:

[{"RouteId":1,"TrackerRouteList":
    [{"TrackerId":7,"CoordinateList":
        [{"Latitude":"21.115957","Longitude":"-86.838120"},
         {"Latitude":"21.11558","Longitude":"-86.838127"}]
     }]
},
{"RouteId":2,"TrackerRouteList":
    [{"TrackerId":8,"CoordinateList":
        {"Latitude":"21.110843","Longitude":"-86.840906"},
        {"Latitude":"21.110757","Longitude":"-86.841915"}]
    }]
},
{"RouteId":3,"TrackerRouteList":
    [{"TrackerId":9,"CoordinateList":
        [{"Latitude":"21.111201","Longitude":"-86.842218"},
         {"Latitude":"21.110757","Longitude":"-86.841915"}]
    }]
}]

I am using this code to organize the data in a most clear way:

$Results = $SOAPIClient->LinesOnRoutes($num); 
$Lat = '';
$Lon = '';
foreach($Results as $Route)
{
    $Results->RouteId;
    foreach($Route->TrackerRouteList as $unit)
    {
        $unit->TrackerId;
        foreach($unit->CoordinateList as $Coordinates)
        {
            $Lat = $Coordinates->Latitude;
            $Lon = $Coordinates->Longitude;
            echo $Point = 'Unit:'.$unit->TrackerId.'[ ' .$Coordinates->Latitude.','.$Coordinates->Longitude.' ]';
        }
    }
}

and the result is this:

Unit:7[ 21.115957,-86.838120 ]
Unit:7[ 21.11558,-86.838127 ]
Unit:8[ 21.110843,-86.840906 ]
Unit:8[ 21.110757,-86.841915 ]
Unit:9[ 21.111201,-86.842218 ]
Unit:9[ 21.110757,-86.841915 ]

How do I transform or Group the result into this?

Unit:7 [ [ 21.115957,-86.838120 ], [ 21.11558, -86.838127 ] ];
Unit:8 [ [ 21.110843,-86.840906 ], [ 21.110757, -86.841915 ] ];
Unit:9 [ [ 21.111201,-86.842218 ], [ 21.110757, -86.841915 ] ];
  • 写回答

1条回答 默认 最新

  • dongmaopan5738 2013-06-16 02:00
    关注

    Use the code below to get the expected result:

    foreach($Results as $Route)
    {
        foreach($Route->TrackerRouteList as $unit)
        {
            echo 'Unit:'.$unit->TrackerId.' [';
            $aux = '';
            foreach($unit->CoordinateList as $Coordinates)
            {
                echo $Point=$aux.'[ ' .$Coordinates->Latitude.','.$Coordinates->Longitude.' ]';
                $aux=',';
            }
            echo "];
    ";
        }
    }
    

    This code properly formats a string to JSON data:

    foreach($Results as $Route)
    {
        $arrayJson = array();
        $i = 0;
        foreach($Route->TrackerRouteList as $unit)
        {
            $arrayJson[$i]['Unit'] = $unit->TrackerId;
            foreach($unit->CoordinateList as $Coordinates)
            {
                $arrayJson[$i]['Coordinates'][] = array($Coordinates->Latitude, $Coordinates->Longitude);
            }
            $i++;
        }
        echo json_encode($arrayJson);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题