访问具有空格的 JSON 对象键

133

假设我有以下对象:

{ "id": "109",
  "No. of interfaces": "4" }

以下代码对于 "id" 键运行良好:
alert(obj.id);      // Works fine!

但是如果键中有空格,那么我就无法使用点表示法访问它们的值,例如。
alert(obj."No. of interfaces");  // Syntax error

如何使用点表示法访问具有空格的键名的值?使用点表示法是否可能?还是必须使用其他方式?


3
这个问题有误,它需要使用括号才能正常运行。 - Martijn Scheffer
3
请注意,JSON对象并不存在。你所拥有的只是一个普通对象。 - CertainPerformance
感谢@MartijnScheffer。修改了问题的语言,以使意图更清晰。 - Uthman
2个回答

253

1
感谢您参考文档。令人惊讶的是,有多少答案缺乏这个重要细节。 - samurai_jane
7
问题和答案之间有什么区别? - Vishal Kumar Sahu
1
答案使用方括号表示法 test['No. of interfaces'] 而不是点表示法 test."No. of interfaces" - benjaki
1
在进行对象解构时,如何完成相同的操作?const { Pricing, Location, data[0]["Product 1"] } = data[0] << 不起作用const { Pricing, Location, ["Product 1"] } = data[0] << 不起作用 - Vinn

13

Pardeep Jain的答案对于静态数据可能有用,但如果我们在JSON中有一个数组怎么办?

例如,我们有i个值,并获取id字段的值

alert(obj[i].id); //works!

但是如果我们需要带有空格的键怎么办?

在这种情况下,可以使用以下结构来帮助([]块之间不需要点号):

alert(obj[i]["No. of interfaces"]); //works too!

1
不需要列出每种可以替换Pardeep Jain答案中的test表达式的变体,这只会给话题增加噪音。那么f()["No. of interfaces"]怎么样?((obj)[i])["No. of interfaces"]呢?等等。 - Philippe-André Lorin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接