如何使用键作为数字解析JSON,返回未定义?

时间:2020-05-21 12:56:51

标签: javascript json

我正在尝试使用以下格式从json读取数据,但结果未定义

我的JSON如下

{
    "1": "A",
    "2": "B",
    "3": "C",
    "4": "D",
    "5": "E",
    "6": "F",
    "key":"pair"    
}

我正在解析如下

rawdata = fs.readFileSync('data.json');
data = JSON.parse(rawdata);
console.log(data.1) //returns undefined. I tried parsing 1 to String but resulted same.
console.log(data.key) //returns pair

3 个答案:

答案 0 :(得分:2)

如果对象的名称以数字开头,则不能使用点号来访问该对象的属性。

要获取该属性,您需要使用方括号符号:

let o = JSON.parse(`{
    "1": "A",
    "2": "B",
    "3": "C",
    "4": "D",
    "5": "E",
    "6": "F",
    "key":"pair"    
}`);

console.log(o['1']);

答案 1 :(得分:1)

如果使用dot notation访问值,则属性键必须是有效的标识符

在此代码中,属性必须是有效的JavaScript标识符,即 字母数字字符序列,还包括下划线 (“ _”)和美元符号(“ $”),它们不能以数字开头。对于 例如,object。$ 1有效,而object.1无效。

在这种情况下,您可以使用bracket notation

obj['1']

规范:Property Accessors

答案 2 :(得分:0)

您可以尝试使用rawdata = fs.readFileSync('./data.json'); 这将告诉脚本data.json文件与其所在的文件夹。 然后使用.data['1']来获取值。