web-dev-qa-db-fra.com

Impossible d'accéder à la propriété JSON avec "-" tiret

Je ne parviens pas à récupérer une valeur d'un objet json lorsque la chaîne comporte un tiret:

{
"profile-id":1234, "user_id":6789
}

Si j'essaie de référencer le jsonObj.profile-id analysé, il retourne ReferenceError: "id" is not defined mais jsonObj.user_id renverra 6789

Je n'ai aucun moyen de modifier les valeurs renvoyées par l'appel externe de l'API et d'essayer d'analyser la chaîne renvoyée afin de supprimer les tirets ruinerait les URL, etc. Aidez-moi?

93
user1902467

jsonObj.profile-id est une expression de soustraction (c'est-à-dire jsonObj.profile - id).

Pour accéder à une clé contenant des caractères ne pouvant pas apparaître dans un identifiant, utilisez des crochets:

jsonObj["profile-id"]
221
SLaks

En plus de cette réponse , notez que dans Node.js, si vous accédez à JSON avec la syntaxe de tableau [], toutes les clés JSON imbriquées doivent suivre cette syntaxe.

C'est le mauvais sens

json.first.second.third['comment']

et vous donnera l'erreur "non définie".

C'est la bonne façon

json['first']['second']['third']['comment'] 
1

Pour ansible, et avec trait d'union, cela a fonctionné pour moi 

    - name: free-ud-ssd-space-in-percent
      debug:
        var: clusterInfo.json.content["free-ud-ssd-space-in-percent"]
0
t.vdh