2011-09-30 3 views
7

J'essaie d'accéder à un champ dans un objet json dans javascript qui a la clé '*'. Le jsonstring ressemble à ceci:JSON - Champ d'accès nommé '*' astérisque

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

Essayer d'accéder myObject.parse.text * ne fonctionne pas, ni ne myObject.parse.text [0].. J'ai cherché une heure maintenant, mais je n'ai trouvé aucune indication que l'astérisque a une signification particulière. Si je ne fais que traverser l'arbre complet et faire une comparaison de chaînes à la 'if (key == "*")' je peux obtenir le texte que je veux récupérer, mais je voudrais accéder directement à ce champ. N'y a-t-il aucun moyen d'accéder au champ?

+9

Celui qui a conçu cette chaîne JSON doit être giflé autour d'un peu . –

+2

vous obtenez ceci avec l'API de Wikipédia, par exemple http://de.wikipedia.org/w/api.php?action=parse&page=Robbie_Williams&format=json&prop=text§ion=0 – simon

+0

Ce n'est pas joli, mais je pourrais voir ceci faire sens dans une sorte de module de traduction frontale. Comme lorsqu'une chaîne standard doit être insérée lorsqu'une certaine clé de traduction n'existe pas pour une langue donnée. – iMe

Répondre

11
json.parse.text["*"] 

Nom chanceux pour un membre d'objet.

+1

Merci, ça marche aussi bien. C'est un nom étrange, il est retourné par la fonction 'parse' de l'API MediaWiki. – Peter

5

Essayez d'utiliser l'opérateur d'index sur parse.text:

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

Merci beaucoup, ça marche! – Peter

+0

@genesis Je ne comprends pas votre édition? N'importe quelle raison? – Fox32

+0

@ Fox32: oui. J'avais downvoted votre message accidentellement mais l'ai remarqué après long temps – genesis

5

essayer d'utiliser

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

Merci beaucoup, cela fonctionne! – Peter

2

Vous pouvez faire:

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

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