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

Dynamically fill json object with strings and string arrays

本文关键字:字符串 json 对象 填充 数组 动态      更新时间:2023-09-26

我有以下问题。我是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()我得到一个错误的[]。

在重新阅读你的情况后,我认为你想要的是以下内容:

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;
}