使用前导下划线解析JSON

时间:2015-06-11 00:59:40

标签: javascript jquery json

当我console.log我的数据时,它在Chrome开发工具中看起来像这样:

e.LatLngBounds {_southWest: e.LatLng, _northEast: e.LatLng}
    _northEast: e.LatLng
        lat: 50.62507306341435
        lng: -69.169921875
      __proto__: Object
    _southWest: e.LatLng
        lat: 27.059125784374068
        lng: -127.96875
       __proto__: Object
    __proto__: Object

如果我JSON.stringify它(如此:var totbounds = JSON.stringify(mybounds);),我明白了:

{"_southWest":{"lat":27.059125784374068,"lng":-127.96875},"_northEast":{"lat":50.62507306341435,"lng":-69.169921875}}

我尝试解析它以获取_southWest lat(例如),但这些都不起作用:

totbounds[_southWest][lat];
totbounds._southWest.lat;

(注意,totbounds是字符串化对象)

2 个答案:

答案 0 :(得分:4)

JSON.stringify 将您的JavaScript对象转换为字符串,因此您无法像尝试那样将其作为对象进行访问。 Stringified JSON不是您可以访问其属性的对象。对象应该保持对象,而不是字符串化。你不需要它(如果我理解你的问题)。

假设:

var mybound = {_southWest: e.LatLng, _northEast: e.LatLng}
_northEast: e.LatLng
    lat: 50.62507306341435
    lng: -69.169921875
  __proto__: Object
_southWest: e.LatLng
    lat: 27.059125784374068
    lng: -127.96875
   __proto__: Object
__proto__: Object

要访问其财产,您可以通过以下方式执行:

var lat = mybound["_southWest"]["lat"];    

答案 1 :(得分:0)

如果mybounds是你的对象,你可以做到

mybounds._southWest.lat;

示例:

var str = '{"_southWest":{"lat":27.059125784374068,"lng":-127.96875},"_northEast":{"lat":50.62507306341435,"lng":-69.169921875}}';

var mybounds= JSON.parse(str);
console.log(mybounds._southWest.lat);
  

27.059125784374068