2011-09-30 15 views
7

Sto provando ad accedere a un campo in un oggetto json in javascript che ha la chiave '*'. Il jsonstring assomiglia a questo:JSON - Campo di accesso denominato asterisco '*'

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

Cercando di accedere myObject.parse.text * non funziona, non fa myObject.parse.text [0].. Ho cercato un'ora adesso, ma non ho trovato alcun indizio che l'asterisco abbia un significato speciale. Se ho appena attraversato l'albero completo e faccio il confronto delle stringhe a la 'if (key == "*")' Posso ottenere il testo che voglio recuperare, ma vorrei accedere direttamente a questo campo. Non c'è modo di accedere al campo?

+9

Chiunque sia stato progettato tale stringa JSON deve essere schiaffeggiato un po 'intorno . –

+2

ottieni questo con l'API di wikipedia, ad esempio http://de.wikipedia.org/w/api.php?action=parse&page=Robbie_Williams&format=json&prop=text§ion=0 – simon

+0

Non è bello, ma ho potuto vedere questo make senso in una sorta di modulo di traduzione front-end. Come quando una stringa standard deve essere inserita quando una determinata chiave di traduzione non esiste per una determinata lingua. – iMe

risposta

11
json.parse.text["*"] 

Nome Yucky per un membro dell'oggetto.

+1

Grazie, funziona anche così. È un nome strano, viene restituito dalla funzione 'parse' dell'API MediaWiki. – Peter

5

Prova Usa l'operatore indice su parse.text:

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

Grazie mille, funziona! – Peter

+0

@genesis Non capisco la tua modifica? Qualche ragione? – Fox32

+0

@ Fox32: sì. Avevo downvoted il tuo post in modo accidentale, ma l'ho notato dopo molto tempo – genesis

5

tenta di utilizzare

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

Grazie mille, funziona! – Peter

2

Si potrebbe fare:

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

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