2015-09-13 2 views
-4

У меня есть ответ JSON как это:Как добраться до данных JSON внутри скобок

google.friendconnect.container["renderOpenSocialGadget"](
{ 

    height: 200, 
    url: "http://username.github.io/", 

    "view-params": {"style":"light","url":"https://www.facebook.com/username","height":"258"}, 

    "prefs": {"style":"light","url":"https://www.facebook.com/username","height":"258"} 

    }, skin); 

Я хочу, чтобы достичь значений, таких как высота, URL, вид-Params, но не мог. Я попытался это, но он не работал:

console.log(google.friendconnect.container["renderOpenSocialGadget"].url); 
+1

Это не является ... –

+0

JSON @JeffMercado Независимо от того, если это JSON или нет, как я могу получить значения внутри скобок? –

+0

@maskedmagician Лучшим решением является, возможно, запрос JSON с сервера. Это возможно? –

ответ

1

Выражение google.friendconnect.container["renderOpenSocialGadget"]( эквивалентно google.friendconnect.container.renderOpenSocialGadget(

Учитывая, что мы видим, что это метод объекта, получение объекта JSON и дополнительный параметр (skin) в качестве параметров.

Поскольку объект как-то «анонимный» анализируется непосредственно в вызове функции, вы больше не сможете получить к нему доступ, как только функция его использует.

Проверьте, если google.friendconnect.container имеет методы геттера (они обычно имеют ...) на console.log(google.friendconnect.container).

EDIT

Просто идея: вы можете поймать вызов и передать его:

google.friendconnect.container["MyrenderOpenSocialGadget"] = 
     google.friendconnect.container["renderOpenSocialGadget"]; 

google.friendconnect.container["renderOpenSocialGadget"] = function(obj, skin) { 

    // do what you want with obj 
    console.log(obj.url); 

    //call original 
    google.friendconnect.container["MyrenderOpenSocialGadget"](obj, skin); 

}); 
+0

Вот как выглядит весь ответ: http://jsfiddle.net/8d23h6ob/ –

+0

@maskedmagician Немного сложнее, но не имеет никакого значения. –

Смежные вопросы