在Javascript对象/ json中使用变量会产生编译错误

时间:2011-12-13 15:08:18

标签: javascript json

第一次使用javascript和JSON。好奇为什么会导致编译器错误:

var dataTypes = new function() {
    this.list = "list"; this.boolean = "boolean";
};  

var jsonDataTypes = [
        {dataTypes.list:"Food For Lunch"}
];

如果没有。

var dataTypes = new function() {
    this.list = "list"; this.boolean = "boolean";
};  

var jsonDataTypes = [
        {"Food For Lunch":dataTypes.list}
];

为什么我允许使用变量作为值而不是密钥?

错误是:

Multiple markers at this line
    - Missing semicolon
    - Syntax error on token(s), misplaced 
     construct(s)
    - Missing semicolon
    - Syntax error on tokens, delete these 
     tokens

3 个答案:

答案 0 :(得分:3)

首先,您正在使用JavaScript对象,而不是JSON。对象是JavaScript中的数据类型,而JSON是数据传输格式。

对象文字内的键必须是有效的标识符,字符串或数字,因为键的解释字面。标识符不允许包含点(.)和其他某些字符。有关详细信息,请参阅specification

如果您想使用dataTypes.list的值作为键,则必须分两步创建对象:

var jsonDataTypes = [{}];
jsonDataTypes[0][dataTypes.list] = "Food For Lunch";

或者如果你想按字面意思使用它,请使用字符串:

var jsonDataTypes = [
    {"dataTypes.list": "Food For Lunch"}
];

答案 1 :(得分:1)

由于JS语法。但是你可以做到以下几点:

var jsonDataTypes = [{}];

jsonDataTypes[0][dataTypes.list] = "Food For Lunch";

答案 2 :(得分:1)

JavaScript对象语法不允许评估Key。我想你可以做以下事情:

var jsonDataTypes = [];
var obj = {};
obj[dataTypes.list] = "Food For Lunch";
jsonDataTypes.push(obj);