当字符串有短划线字符时,我无法从json对象中检索值:
{
"profile-id":1234, "user_id":6789
}
如果我尝试引用已解析的jsonObj.profile-id
,则返回ReferenceError: "id" is not defined
但jsonObj.user_id将返回6789
我没有办法修改外部api调用返回的值,并尝试解析返回的字符串,以便删除破折号,也会破坏传递的URL等。帮助
答案 0 :(得分:230)
jsonObj.profile-id
是一个减法表达式(即jsonObj.profile - id
)。
要访问包含无法在标识符中出现的字符的密钥,请使用括号:
jsonObj["profile-id"]
答案 1 :(得分:1)
除了this answer之外,请注意,在Node.js中,如果您使用数组语法[]
访问JSON,则所有嵌套的JSON密钥都应遵循该语法
这是错误的方式
json.first.second.third['comment']
,并且会给您“未定义”错误。
这是正确的方法
json['first']['second']['third']['comment']
答案 2 :(得分:1)
对于尝试将接受的解决方案应用于 HomeAssistant 值模板的任何人,如果您嵌套在双引号中,则必须使用单引号:
value_template: "{{ value_json['internet-computer'].usd }}"
答案 3 :(得分:0)
对于ansible并使用连字符,这对我有用:
- name: free-ud-ssd-space-in-percent
debug:
var: clusterInfo.json.content["free-ud-ssd-space-in-percent"]