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?
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"]
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']
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"]