如果我在JS中有一个数组,如下所示:
{
"car": "BMW",
"count": 7
}
使用这个数组,我可以很容易地从PHP生成它:
array(
'car' => 'BMW',
'count' => 7,
)
和json_encode。这不是问题。
但是,如果我在JS中有一个数组,如下所示:
{
"center": new google.maps.LatLng(-34.397, 150.644),
"zoom": 8
}
有没有一些好的方法可以从PHP中生成它?
上面的方法失败了,因为JSON在"new google.maps.LatLng(-34.397150.644)"周围加了引号。
google.maps.LatLng()
并不是真正的"数据"
因此,你必须通过两个步骤来完成这一点:
您可以在另一个用于JSON:的PHP
array
中包含所需的值array( 'center' => array( 'lat' => -34.397, 'lng' => 150.644 ), 'zoom' => 8 )
{ "center": { "lat": -34.397, "lng": 150.644 }, "zoom": 8 }
然后,一旦解析为JavaScript
Object
,就说data
:data.center = new google.maps.LatLng(data.center.lat, data.center.lng);
而且,如果数据中有许多这样的对象的示例,您可以指定一个
reviver
function
来尝试识别它们并创建实例:// parse, creating `google.maps.LatLng` from any { lat: ..., lng: ..., ... } var data = JSON.parse(jsonString, function (key, value) { if (typeof value === 'object' && value.lat && value.lng) { return new google.maps.LatLng(value.at, value.lng); } else { return value; } });
示例:http://jsfiddle.net/XXbUU/
附带说明:JSON和JavaScript在"array"类型之间的区别比PHP更强。
- "关联"PHP中的
array
s在JSON和JavaScript中变为Object
s - "非关联"PHP中的
array
s在JSON和JavaScript中变为Array
s