You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法访问JSON子元素:含连字符键的对象访问方案咨询

解决带连字符的JSON键访问问题

嘿,这个坑我之前也踩过!其实不是不能访问带连字符(-)的键,只是你用的**点语法(.)**不支持这种键名而已——因为在JavaScript里,点语法要求键名是有效的标识符(不能包含连字符、空格,也不能以数字开头),解释器会把page.content-items当成page.content - items(减法运算),自然就报错了。

解决方案:方括号语法

对于带特殊字符的键名,改用方括号语法就能正常访问了,具体写法如下:

1. 访问content-items本身

// 错误写法(会被当成减法运算,直接报错)
// page.content-items 

// 正确写法
page['content-items']

2. 访问嵌套的content数组

如果要进一步获取里面的内容列表,还可以链式组合方括号和点语法(只要后续键名是合法标识符):

// 两种写法都可行
page['content-items'].content
// 或者全用方括号
page['content-items']['content']

完整示例

把你的JSON赋值给变量后,完整的访问代码可以是这样:

const movieData = { 
  "page": { 
    "title": "Romantic Comedy", 
    "total-content-items" : "54", 
    "page-num-requested" : "1", 
    "page-size-requested" : "20", 
    "page-size-returned" : "20", 
    "content-items": { 
      "content": [ 
        { "name": "The Birds", "poster-image": "poster1.jpg" }, 
        { "name": "Rear Window" } 
      ] 
    } 
  } 
};

// 获取所有电影内容
const allMovies = movieData.page['content-items'].content;
console.log(allMovies); // 输出包含两部电影的数组

// 获取第一部电影的海报地址
const firstMoviePoster = allMovies[0]['poster-image'];
console.log(firstMoviePoster); // 输出"poster1.jpg"

总结

只要键名包含连字符、空格或者以数字开头这类不符合标识符规则的字符,都需要用['键名']的方式来访问,而不能用点语法。这个规则不仅适用于JSON对象,也适用于所有JavaScript对象的属性访问~

内容的提问来源于stack exchange,提问作者Alex Varghese

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:15:59