当字符串具有破折号字符时,我无法从 json 对象中检索值:
{
"profile-id":1234, "user_id":6789
}
如果我尝试引用jsonObj.profile-id
它返回的解析ReferenceError: "id" is not defined
但 jsonObj.user_id 将返回 6789
我没有办法修改由外部 api 调用返回的值,并试图解析返回的字符串以删除破折号会破坏 url 等,这些也是传递的。帮助?
当字符串具有破折号字符时,我无法从 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"]
除了这个答案,请注意,在 Node.js 中,如果您使用数组语法访问 JSON,[]
所有嵌套的 JSON 键都应遵循该语法
这是错误的方式
json.first.second.third['comment']
并且会给你“未定义”的错误。
这是正确的方法
json['first']['second']['third']['comment']
对于ansible,并使用连字符,这对我有用:
- name: free-ud-ssd-space-in-percent
debug:
var: clusterInfo.json.content["free-ud-ssd-space-in-percent"]
对于任何尝试将公认的解决方案应用于 HomeAssistant 值模板的人,如果您嵌套在双精度中,则必须使用单引号:
value_template: "{{ value_json['internet-computer'].usd }}"