2011-11-14 21 views
6

Próbuję wyciągnąć tekst z artykułu w Wikipedii, używając jego API (API jest hojnym określeniem tego, co oferuje, ale będziemy go używać, jak sądzę), a ja jestem uruchamianie problemów związanych z analizowaniem kolejnego obiektu JSON, który otrzymuję. Mianowicie, obiekt zawiera tekst szukam pod klucz, którego etykieta jest „*” taki sposób, że po uruchomieniu komendy:Wikipedia API - Uzyskiwanie dostępu do obiektu JSON

$.getJSON("http://en.wikipedia.org/w/api.php?action=parse&format=json&callback=?", {page:"Red Sea clownfish", prop:"text"}, function(data) { 

I wtedy próbować analizować te informacje do łańcucha za pomocą polecenia:

var dat = data.parse.text.*; 

Który ja wtedy wyprowadzania do konsoli za pomocą:

console.log(dat); 

Niestety, ani Google Chrome ani Firefox wydaje się być w stanie przetworzyć '*' klawisz. Kiedy zrzucam pełny obiekt "danych" do konsoli, widzę, że (zagnieżdżone) klucze dla struktury danych to "parsowanie", "tekst" i '*'. Mogę nawet zrzucić wymagany tekst do klawisza "*". To znaczy.

var dat = data.parse.text; 

działa. Po prostu postać "*" nie chce być rozpoznawana.

Wszelkie pomysły na rozwiązanie tego problemu? Idealnie chciałbym uzyskać dostęp do wartości, do której odwołuje się klucz "*". Po prostu nie mam pojęcia, jak go zaprogramować w javascript.

+0

Tak z ciekawości, co się z '' = zwrotnego? (Wydaje się działać tak samo, jak pusty callback, prawdopodobnie dlatego, że MediaWiki rozbiera nieprawidłową postać.) –

+1

Tak! Wikipedia/MediaWiki ma bez wątpienia najbardziej przerażające API na świecie. – Jaseem

Odpowiedz

8

Znak * nie jest dozwolony jako część identyfikatora (nazwa zmiennej) w JavaScript, więc składnia nie działa. Zamiast tego można użyć notacji tablica/indeksie, aby uzyskać dostęp właściwości przy użyciu dowolny ciąg, niezależnie od tego, czy jest to poprawny identyfikator:

var dat = data.parse.text['*']; 
+0

Działa! Dziekuje za szybką odpowiedź! – Mephistopheles

Powiązane problemy