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

如何在Google Fonts的JSON数组中引用数字命名的files字段?

问题:如何引用JSON中数字键名的属性

我正在处理一个Google Fonts的JSON数组,字体结构按family->files->filename层级组织。部分filename以数字形式作为键名,例如以下示例中files下的"100"字段:

"family": "Roboto",
"variants": [
  "100",
  "100italic",
  "300",
  "300italic",
  "regular",
  "italic",
  "500",
  "500italic",
  "700",
  "700italic",
  "900",
  "900italic"
],
"subsets": [
  "cyrillic",
  "cyrillic-ext",
  "greek",
  "greek-ext",
  "latin",
  "latin-ext",
  "vietnamese"
],
"version": "v30",
"lastModified": "2022-09-22",
"files": {
  "100": "http://fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1MmgWxPKTM1K9nz.ttf",
  "regular": "http://fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Me5WZLCzYlKw.ttf"
}

遍历该JSON数组时,fontitem.files.regular可以正常调用,但数字键名无法通过点语法直接访问,尝试fontitem.files.$100引用"100"字段失败,相关代码如下:

$.getJSON('https://www.googleapis.com/webfonts/v1/webfonts?key=mykey', function(response) {
    var items = response.items;
    items.forEach(function(fontitem){
        if (fontitem.family == "Roboto") {
            alert(fontitem.files.$100); // 无效
            alert(fontitem.files.regular); // 有效
            return;
        }
    });
});

解决方案:使用方括号语法引用数字键名

在JavaScript中,当对象的属性名是数字、包含特殊字符或不符合标识符命名规则时,不能使用点语法访问,必须改用方括号语法,且键名需以字符串形式传入(用引号包裹)。

修改后的代码示例:

$.getJSON('https://www.googleapis.com/webfonts/v1/webfonts?key=mykey', function(response) {
    var items = response.items;
    items.forEach(function(fontitem){
        if (fontitem.family == "Roboto") {
            alert(fontitem.files["100"]); // 正确引用数字键名
            alert(fontitem.files.regular); // 点语法仍可用于常规键名
            return;
        }
    });
});

补充说明:

  • 方括号语法适用于所有类型的键名,包括带空格、特殊符号的非标准标识符键名
  • 即使键名在JSON中是数字类型,访问时也要用字符串形式传入方括号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:37:05