使用字符串和字符串数组动态填充json对象

时间:2015-12-18 20:20:13

标签: javascript arrays json

我有以下问题。我是json和javascript的新手,我需要动态构建一个json对象并用字符串提供它。传入的字符串没有排序,所以应该可以创建一个字符串数组。我想出了这个设计,但我收到了一个错误。

 addToDumpObject: function (type, v, dump) {

        if (v instanceof A.entity.Entity) {
            dump.type.push(v.toString());
        } else if (v instanceof jQuery) {
            dump.type.push(v);
        } else if ($.isArray(v)) {
            for (var i in v) {
                A.util.addToDumpObject(type, v[i], dump);
            }
            return;
        } else {
        }
    }

dump是我的json对象。 v可以是实体或数组或jQuery对象的实例。 type是实体类型,我想按以下方式对值进行排序。

dump{
   "Permission" : [ "PHONE", "SMS" ]
   "String" : [ "MN7", "AT", "DE" ]
};

我得到的错误是“Uncaught TypeError:无法读取未定义的属性'push'”。我认为它是因为我使用了标识符错误,但我不知道如何修复它,如果我尝试转储。[type] .push()我得到一个错误的missplaced []。

1 个答案:

答案 0 :(得分:1)

在完全重读您的情况后,我认为您正在寻找的内容如下:

addToDumpObject: function (type, v, dump) {
    if (!dump[type]) dump[type] = new Array();
    if (!$.isArray(dump[type])) return;
    else if ($.isArray(v)) for (var i in v) A.util.addToDumpObject(type, v[i], dump);
    else {
        if (v instanceof A.entity.Entity) dump[type].push(v.toString());
        else if (v instanceof jQuery) dump[type].push(v);
        else {
            if (!dump['trash']) dump.trash = new Array(); // simply for collecting other parts / debugging
            dump.trash.push(v);
        }
    }
    return;
}