2011-11-14 19 views
6

Estoy tratando de sacar el texto de un artículo de Wikipedia usando su API (API es un término generoso para lo que están ofreciendo, pero lo usaremos, supongo), y estoy encontrándose con problemas relacionados con el análisis del objeto JSON subsiguiente que estoy recibiendo. Es decir, el objeto contiene el texto Busco en una tecla cuya etiqueta es '*' de tal manera que, después de ejecutar el comando:Wikipedia API - Acceso al objeto JSON

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

que luego tratar de analizar esta información en una cadena utilizando el comando:

var dat = data.parse.text.*; 

cual estoy a continuación, dar salida a una consola usando:

console.log(dat); 

Por desgracia, ni Google Chrome ni Firefox parece ser capaz de analizar la '*' clave. Cuando descargo el objeto completo de 'datos' en la consola, puedo ver que las claves (anidadas) para la estructura de datos son 'analizar', 'texto' y '*'. Incluso puedo volcar el texto que necesito hasta la tecla '*'. Es decir.

var dat = data.parse.text; 

funciona. Es solo que el carácter '*' no quiere ser reconocido.

¿Alguna idea sobre cómo solucionar esto? Idealmente, me gustaría obtener acceso al valor al que hace referencia la tecla '*'. Simplemente no tengo idea de cómo programarlo en javascript.

+0

Sólo por curiosidad, ¿cuál es la devolución de llamada '' =?? (Parece que funciona igual que una devolución de llamada vacía, presumiblemente porque MediaWiki está eliminando el carácter no válido). –

+1

¡Sí! Wikipedia/MediaWiki sin duda tiene la API más horrenda del mundo. – Jaseem

Respuesta

8

El carácter * no está permitido como parte de un identificador (nombre de variable) en JavaScript, por lo que la sintaxis no funciona. En su lugar, puede utilizar la notación de matriz/subíndice para acceder a las propiedades utilizando las cadenas, independientemente de si se trata de un identificador válido:

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

¡Funciona! ¡Gracias por la rápida respuesta! – Mephistopheles

Cuestiones relacionadas