繁体   English   中英

带有JavaScript对象的PHP数组到JavaScript

[英]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()并不是真正的“ 数据”

因此,您必须分两步完成此操作:

  1. 您可以在另一个PHP array中包含JSON所需的值:

     array( 'center' => array( 'lat' => -34.397, 'lng' => 150.644 ), 'zoom' => 8 ) 
     { "center": { "lat": -34.397, "lng": 150.644 }, "zoom": 8 } 
  2. 然后,一旦解析为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在“ 数组 ”类型之间有更强的区分。

  • PHP中的“ 关联array在JSON和JavaScript中成为Object
  • PHP中的“ 非关联array变成JSON和JavaScript中的Array

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM