2011-09-30 15 views
7

Estoy tratando de acceder a un campo en un objeto json en javascript que tiene la clave '*'. El jsonString se ve así:JSON - Campo de acceso llamado '*' asterisco

{"parse": 
{"text": 
    {"*":"text i want to access"} 
} 
} 

Intentar acceder myObject.parse.text * no funciona, tampoco lo hace myObject.parse.text [0].. He buscado durante una hora, pero no he encontrado ninguna pista de que el asterisco tenga un significado especial. Si solo recorro el árbol completo y hago una comparación de cadenas a la 'if (key == "*")' puedo obtener el texto que quiero recuperar, pero me gustaría acceder directamente a este campo. ¿No hay forma de acceder al campo?

+9

El que diseñó esa cadena JSON debe ser una palmada de todo un poco . –

+2

obtienes esto con la API api, por ejemplo http://de.wikipedia.org/w/api.php?action=parse&page=Robbie_Williams&format=json&prop=text§ion=0 – simon

+0

No es bonita, pero pude ver que esta marca sentido en algún tipo de módulo de traducción front-end. Como cuando se debe insertar una cadena estándar cuando no existe una determinada clave de traducción para un determinado idioma. – iMe

Respuesta

11
json.parse.text["*"] 

Yucky nombre para un miembro de objeto.

+1

Gracias, eso también funciona. Es un nombre extraño, lo devuelve la función MediaWiki API 'analizar'. – Peter

5

Pruebe usar el operador de índice en parse.text:

var value = object.parse.text["*"]; 
+1

Muchas gracias, ¡eso funciona! – Peter

+0

@genesis No entiendo tu edición? ¿Cualquier razón? – Fox32

+0

@ Fox32: sí. He votado negativamente por tu publicación por accidente, pero lo he notado después de mucho tiempo – genesis

5

intenta utilizar

var text = myObject.parse.text['*'] 
+1

Muchas gracias, ¡eso funciona! – Peter

2

Se podría hacer:

var json = {"parse": 
{"text": 
    {"*":"text i want to access"} 
} 
} 

alert(json.parse.text['*']);