[英]PHP array with JavaScript objects to JavaScript
如果我在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.397,150.644)”周围加上了引号。
JSON不支持自定义类型。 它只是用于传递数据并可供任何消费者使用,而google.maps.LatLng()
并不是真正的“ 数据” 。
因此,您必须分两步完成此操作:
您可以在另一个PHP array
中包含JSON所需的值:
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/
旁注:与PHP相比,JSON和JavaScript在“ 数组 ”类型之间有更强的区分。
array
在JSON和JavaScript中成为Object
。 array
变成JSON和JavaScript中的Array
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.