PHP 和 JSON:返回合适的格式
PHP and JSON: Returning a suitable format
我正在尝试使用谷歌地图方向API从数据库中绘制连接城市的路线。我的问题是我被困在应该通过 json 从 php 脚本返回值的点上。我要映射的数据通知一个数组:
$data=array('chicago','new york','lebanon','maysvile','greenfield');
我的目的是从我的数据数组中返回以下格式。
var request = {
origin:start,
destination:end,
waypoints:[{
location:"",
stopover:true
}],
travelMode: google.maps.DirectionsTravelMode.DRIVING
}
这就是我获得起点和目的地的方式:数组中的第一个和最后一个元素:
$start=reset($data);
$end=end($data);
php 使用 json_encode() 返回的数据
$response=array('origin'=>$start,'destination'=>$end,'travelMode'=>"google.maps.DirectionsTravelMode.DRIVING");
echo json_encode($response);
返回的格式不正确。我也不知道我应该如何做中点。中点是选取$start和$end后剩余的所有值。任何想法都受到高度赞赏。谢谢
$response = array(
'origin' => array_shift($data),
'destination' => array_pop($data),
'waypoints' => array(),
'travelMode' => 'DRIVING'
);
foreach($data as $wp) {
$response['waypoints'][] = array('stopover' => true, 'location' => $wp);
}
echo json_encode($response);
请注意,array_shift
和array_pop
修改$data
数组!
脚本的输出为:
{
"origin": "chicago",
"destination": "greenfield",
"waypoints": [
{
"stopover": true,
"location": "new york"
},
{
"stopover": true,
"location": "lebanon"
},
{
"stopover": true,
"location": "maysvile"
}
],
"travelMode": "DRIVING"
}
当你从 PHP 得到响应时,它将是一个字符串,包含 JSON 格式的数据。
您将需要使用:
var myObject = JSON.parse(stringOfJson);
将其转换为 JSON 对象。
如果你想要数据的PHP表示,为什么不在PHP中创建一个对象来表示它:
class RouteInformation
{
public $Origin;
public $Destination;
public $Waypoints;
public $TravelMode;
public function __construct()
{
$this->Waypoints = array();
}
}
然后,您可以将此对象序列化为 JSON,它将采用所需的格式。
$response = new RouteInformation();
$response->Origin = array_shift($data);
$response->Destination = array_pop($data);
$response->TravelMode = 'DRIVING';
foreach($data as $wp) {
$response->Waypoints[] = array('stopover' => true, 'location' => $wp);
}
echo json_encode($response);
您可以更进一步,创建一个 Waypoint 类来表示数组中的每个 Waypoint。
相关文章:
- 将客户端特定的日期格式返回到服务器MVC4
- 在Smarty中定义AJAX返回的格式
- 如何将日期选择器返回的日期格式转换为其他格式
- KendoDatePicker 无法识别从 Web 服务以 JSON 格式返回的日期
- 修改Ajax请求返回的JSon格式
- Apache poi XSSF创建Excel文件-Create返回格式或文件扩展名无效的空文件
- 谷歌地图API'.pac项目:first'返回格式不正确
- PhoneGap API返回时间戳格式
- 比较两个日期并以正确的格式返回
- 从Google Maps API返回的jQuery格式时间
- 从 ajax 读取值以 json 格式返回
- 如何使用 JQuery DatePicker 以 YYYYMMDD 格式返回日期
- 我的 gulp 插件带有 through2 以奇怪的类似 XML 格式返回文件
- 如何对以 JSON 格式返回的数据进行分组并返回
- d3时间格式返回null
- 蒙古文聋人.toArray()以意外格式返回_id
- 如何对AJAX请求以JSON格式返回的数据进行排序?
- Ajax以json格式返回值问题
- 通过AJAX以JSON格式返回的动态生成的Javascript在附加时将不会执行
- 一个双重javascript函数,用于转换长日期并以mm-dd-yyyy格式返回今天's日期