在多级json对象中使用变量作为键

时间:2015-02-17 06:14:24

标签: javascript jquery json

我有一个名为arrayToSubmit的JSON对象。以下是代码:

location = "Johannesburg, South Africa";
type = "bench";
qty = 1;
assetNumber = 15;

arrayToSubmit = {
    location : {
        type : {
            'qty' : qty,
            'assetNumber' : assetNumber
        }
    }
}

但是chrome的结果如下:

Object{location { type : {"qty" : "1", "assetNumber" : "15"}}}

我需要用初始代码中的变量替换单词location和type,如下所示:

Object{"Johannesburg, South Africa" = { "bench" = {"qty" - "1", "assetNumber" : "15"}}}

(我从我的页面中提取这些值,我只是在这里输入它们以方便使用)。

我已经尝试了这两个示例,但不知道如何以多级格式获取它。

is a way that use var to create json object in key

how to set a json key from a variable

4 个答案:

答案 0 :(得分:3)

您可以使用bracket notation,就像这样

var arrayToSubmit = {};

arrayToSubmit[location] = {};
arrayToSubmit[location][type] = {
  'qty': qty,
  'assetNumber': assetNumber
};

答案 1 :(得分:1)

您必须使用[]运算符将变量值用作键。在对象初始值设定项{}中声明属性时,键始终为字面值。

你这样做:

var location = "Johannesburg, South Africa";
var objectToSubmit = {};
objectToSubmit[location] = {...};

希望这有帮助。

答案 2 :(得分:0)

考虑以下代码:

arrayToSubmit = {};
obj = {};
obj[type] = {
            'qty' : qty,
            'assetNumber' : assetNumber
        };
arrayToSubmit[location] = obj;

答案 3 :(得分:0)

首先,不要使用'location',它会干扰window.location变量。

arrayToSubmit = {};
arrayToSubmit[loc] = {};
arrayToSubmit[loc][type] = {
    'qty' : qty,
    'assetNumber' : assetNumber
};