在json数组中使用变量作为标识符

Rob*_*erd 9 javascript variables json identifier

我想知道是否可以使用指定的变量作为json数组中的标识符.当我尝试这个时,我得到了一些意想不到的结果:

(代码简化,参数以不同方式传递)


var parameter = 'animal';
var value = 'pony';

Util.urlAppendParameters (url, {parameter : value});


Util.urlAppendParameters = function(url, parameters) {
    for (var x in parameters) {
        alert(x);
    }
}

现在警告弹出窗口显示:'参数'而不是'动物'.我知道我可以使用不同的方法(创建一个数组并在新行上分配每个参数),但我想保持我的代码紧凑.

所以我的问题是:是否可以在json数组中使用变量作为标识符,如果可以,请告诉我如何?

提前致谢!

CMS*_*CMS 10

您需要分两步构建对象,并使用[]属性访问器:

var parameter = 'animal';
var value = 'pony';

var obj = {};
obj[parameter] = value;

Util.urlAppendParameters (url, obj);
Run Code Online (Sandbox Code Playgroud)

我不认为JSON数组是更正确的术语,我称之为Object literal.

  • @CMS我们在互联网上搜索了很长时间的解决方案,并在这里找到了,thx (3认同)

Bob*_*Bob 3

不,您不能像这样在对象文字中使用变量作为标识符。解析器需要一个名称,因此您除了提供一个字符串之外不能做太多其他事情。同样,你不能做这样的事情:

var parameter = 'animal';
var parameter = 'value'; //<- Parser expects a name, nothing more, so original parameter will not be used as name
Run Code Online (Sandbox Code Playgroud)

如果您确实想在一行上使用对象文字,唯一的解决方法是使用 eval:

Util.urlAppendParameters (url, eval("({" + parameter + " : value})");
Run Code Online (Sandbox Code Playgroud)