无法使用" - "破折号访问JSON属性

use*_*467 115 javascript json

当字符串有短划线字符时,我无法从json对象检索值:

{
"profile-id":1234, "user_id":6789
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试引用解析jsonObj.profile-id它返回ReferenceError: "id" is not defined但jsonObj.user_id将返回6789

我没有办法修改外部api调用返回的值,并尝试解析返回的字符串以删除破折号,也会破坏传递的URL等.救命?

SLa*_*aks 256

jsonObj.profile-id是减法表达式(即jsonObj.profile - id).

要访问包含无法在标识符中出现的字符的密钥,请使用括号:

jsonObj["profile-id"]
Run Code Online (Sandbox Code Playgroud)

  • 当这在javascript及其本机实现中以字符串形式访问对象属性键时,确保它在顶部的所有内容中都有效 (3认同)
  • 谢谢!有关信息:它也适用于角度:{{jsonObj.attributes ["profile-id"]}} (2认同)
  • @ EricHepperle-CodeSlayer2010:您应该使用`style.boxShadow`代替.`style`对象将连字符转换为camelCase. (2认同)

小智 6

除了这个答案之外,请注意,在 Node.js 中,如果使用数组语法访问 JSON,[]则所有嵌套 JSON 键都应遵循该语法

这是错误的方法

json.first.second.third['comment']
Run Code Online (Sandbox Code Playgroud)

并会给你“未定义”错误。

这是正确的方法

json['first']['second']['third']['comment'] 
Run Code Online (Sandbox Code Playgroud)