JSON键中的动态名称

5

我正在尝试动态生成JSON,但当我像这样做时:

var jsonVar = {
    "section": {}
}

var elementsStoragePrefix = "_app_", 
    elementName = elementsStoragePrefix + "some_name";

$.extend(jsonVar .section, { elementName: "<option>This is a text</option>"});

我得到的密钥是elementName而不是_app_some_name

jsonVar.section =>
    Object
        elementName: "<option>This is a text</option>"
        __proto__: Object
2个回答

9
创建对象字面量时,无需引用属性名称,因此在您的示例中elementName将被照字面理解。不过,可以使用方括号语法(或者您拼写的其他方式):
var extendObject = {};
extendObject[elementName] = '<option>Foobar</option>';
$.extend(jsonVal.section, extendObject);
//or, to use brackets all the way:
$.extend(jsonVal['section'], extendObject);

那应该可以解决你的问题。

4
jsonVar.section[elementName] = "<option>This is a text</option>";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接