无法从阵列中获取信息

时间:2016-12-25 16:17:08

标签: javascript arrays json api

我有这个名为gameupdater.json的json文件

gameupdater.json:

{ "730":{
    "success":true,
    "data":{
       "price_overview":{
          "currency":"EUR",
          "initial":1399,
          "final":937,
          "discount_percent":33
       }
    }
  }
}

我有一个javascript文件,其中包含以下代码:



var updater = JSON.parse(fs.readFileSync('gameupdater.json'));
var jsonstring = JSON.stringify(updater, null, 4);

var num = updater.730.data.priceoverview.initial;

console.log(num);




然而每当我在CMD中运行它(node bot.js)时。 它没有给我我想要的东西,即1399。

它给了我这个错误:

var num = updater.730.data.priceoverview.initial;
             ^^^^

SyntaxError:意外的数字

哦,我很确定改变内容很难,因为这个阵列将自动从这个网站下载: http://store.steampowered.com/api/appdetails?appids=730

2 个答案:

答案 0 :(得分:3)

您不能使用点语法编号。您需要使用大括号语法,并将其作为字符串访问:

updater["730"].data... 

或者,如果属性完全是一个数字,你也可以使用一个裸数,但同样,它必须在方括号内:

updater[730].data... 

答案 1 :(得分:2)

如果对象的属性开头,则无法使用 dot 运算符访问属性 - 您必须使用括号表示法 []

请参阅此MDN链接中的 Dot Notation 部分 - Property Accessors

  

在此代码中,属性必须是有效的JavaScript标识符,即a   字母数字字符序列,也包括下划线   (" _")和美元符号(" $"),不能以数字开头

见下面的演示:



var updater = {
  "730": {
    "success": true,
    "data": {
      "price_overview": {
        "currency": "EUR",
        "initial": 1399,
        "final": 937,
        "discount_percent": 33
      }
    }
  }
};

var jsonstring = JSON.stringify(updater, null, 4);

var num = updater['730'].data.price_overview.initial;

console.log(num);