Ответ 1
jsonObj.profile-id
является выражением вычитания (т.е. jsonObj.profile - id
).
Чтобы получить доступ к ключу, который содержит символы, которые не могут отображаться в идентификаторе, используйте скобки:
jsonObj["profile-id"]
Я не могу получить значение из объекта json, когда строка имеет тире:
{
"profile-id":1234, "user_id":6789
}
Если я попытаюсь ссылаться на анализируемый jsonObj.profile-id
, он возвращает ReferenceError: "id" is not defined
, но jsonObj.user_id вернет 6789
У меня нет способа изменить значения, возвращаемые внешним вызовом api, и попытаться разобрать возвращенную строку, чтобы удалить тире, будут уничтожены URL-адреса и т.д., которые также передаются. Помощь?
jsonObj.profile-id
является выражением вычитания (т.е. jsonObj.profile - id
).
Чтобы получить доступ к ключу, который содержит символы, которые не могут отображаться в идентификаторе, используйте скобки:
jsonObj["profile-id"]
Для ansible и использования дефиса это сработало для меня:
- name: free-ud-ssd-space-in-percent
debug:
var: clusterInfo.json.content["free-ud-ssd-space-in-percent"]
В дополнение к этому ответу обратите внимание, что в Node.js при доступе к JSON с синтаксисом массива []
все вложенные ключи JSON должны следовать этому синтаксису
Это неправильный путь
json.first.second.third['comment']
и выдаст вам "неопределенную" ошибку.
Это правильный путь
json['first']['second']['third']['comment']