我有以下问题。我是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 []。
答案 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;
}