2015-06-11 3 views
1

Когда я console.log мои данные, это выглядит, как это в Chrome Dev Tools:Анализировать JSON с ведущими Подчеркивание

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}} 

Я пытаюсь разобрать его, чтобы получить _southWestlat (к примеру), но ни одна из этих работ:

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

(Примечание, totbounds является строковым объектом)

+3

Если вы stringify объект, вы получите строку JSON, а не объект. Вы должны прочитать свойства объекта, а не строку. Используйте 'mybounds._southWest.lat'. – Guffa

+0

Попробуйте следующее: http://jsbin.com/lumeqemaza/1/watch?js,console – Chan

+1

Я думаю, что вы хотите 'mybounds._southWest.lat' или' mybounds ['_ southWest'] ['lat'] ' – Phil

ответ

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"];  
+0

Спасибо. Я забываю цитаты. – jonmrich

+0

@ jonmrich: вам не нужны кавычки. 'mybounds._southWest.lat;' работает так же хорошо. Ваша единственная ошибка заключалась в том, чтобы преобразовать объект в строку. Всегда читайте документацию, прежде чем использовать незнакомый метод, сэкономит вам много догадок. –

+0

@FelixKling Ваше предложение верное. У людей есть два варианта доступа к их свойствам объекта. Спасибо, что добавили это, так или иначе. –

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