无法使用“-”破折号[duplicate]访问JSON属性

tzdcorbm  于 2022-11-19  发布在  其他
关注(0)|答案(5)|浏览(133)

此问题在此处已有答案

How can I access object properties containing special characters?(2个答案)
How do I reference a JavaScript object property with a hyphen in it?(11个答案)
4天前关闭。
当字符串中包含破折号时,我无法从json对象中检索值:

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

如果我尝试引用解析后的jsonObj.profile-id,它将返回ReferenceError: "id" is not defined,但jsonObj.user_id将返回6789
我没有办法修改外部api调用返回的值,并且试图解析返回的字符串以删除破折号会破坏URL等,它们也会被传递。帮助?

ogsagwnx

ogsagwnx1#

jsonObj.profile-id是减法表达式(即jsonObj.profile - id)。
要访问包含不能出现在标识符中的字符的密钥,请使用方括号:

jsonObj["profile-id"]
mrzz3bfm

mrzz3bfm2#

除了this answer之外,请注意,在Node.js中,如果您使用数组语法[]访问JSON,则所有嵌套的JSON关键字都应遵循该语法
走错路了

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

并且将给予“undefined”错误。
这是正确的方法

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

k4emjkb13#

对于ansible,使用连字符,这对我很有效:

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

v09wglhw4#

对于任何尝试将接受的解决方案应用于HomeAssistant值模板的用户,如果嵌套在双引号中,则必须使用单引号:

value_template: "{{ value_json['internet-computer'].usd }}"
sd2nnvve

sd2nnvve5#

如果您使用的是Linux,请尝试使用以下模板打印包含破折号'-'的JSON值

jq '.["value-with-dash"]'

对我很有效。

相关问题