Не удалось получить доступ к свойству JSON с тире "-"

Я не могу получить значение из объекта json, когда строка имеет тире:

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

Если я попытаюсь ссылаться на анализируемый jsonObj.profile-id, он возвращает ReferenceError: "id" is not defined, но jsonObj.user_id вернет 6789

У меня нет способа изменить значения, возвращаемые внешним вызовом api, и попытаться разобрать возвращенную строку, чтобы удалить тире, будут уничтожены URL-адреса и т.д., которые также передаются. Помощь?

Ответ 1

jsonObj.profile-id является выражением вычитания (т.е. jsonObj.profile - id).

Чтобы получить доступ к ключу, который содержит символы, которые не могут отображаться в идентификаторе, используйте скобки:

jsonObj["profile-id"]

Ответ 2

Для ansible и использования дефиса это сработало для меня:

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

Ответ 3

В дополнение к этому ответу обратите внимание, что в Node.js при доступе к JSON с синтаксисом массива [] все вложенные ключи JSON должны следовать этому синтаксису

Это неправильный путь

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

и выдаст вам "неопределенную" ошибку.

Это правильный путь

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