我想用JSON发送一个对象,我用for循环迭代这个对象。我发送的JSON是正确的,但问题是数组中有空值。我认为它与myValue.children[index]= item;
相关联
我尝试了.filter()方法,但它没有解决我的问题,因为返回的数组是空的。我也尝试了一个条件,但我只检测到4个值。
这是我收到的JSON:
{
"name":"object",
"children":[
{
"name":"myName",
"children":[
{
"name":"aNumber",
"size":12345
}
]
},
null,
null,
null,
{
"name":"myName",
"children":[
{
"name":"aNumber",
"size":12345
}
]
},
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
{
"name":"myName",
"children":[
{
"name":"aNumber",
"size":12345
}
]
},
{
"name":"myName",
"children":[
{
"name":"aNumber",
"size":12345
}
]
}
]
}
这是我的代码:
function myFunction(index, tabItem , callback){
var result = '';
var myValue = {};
var childrenTicket = [];
myValue.name = "object";
myValue.children = childrenTicket;
for (index in tabItem) {
try{
var currentItem = tabItem[index];
var Object =currentItem.issuelinks.issuelinktype.outwardlinks.issuelink;
for(var SeveralObject in Object) {
var item = {};
var specificObject = Object[SeveralObject];
var main = specificObject._;
var id = specificObject.$.id;
var descriptionObject = {};
descriptionObject.name = id;
descriptionObject.size = 12345;
item.name = main;
if (myValue.children[index] == undefined){
console.log('undefined detected');
}
myValue.children[index]= item;
//result = result + (myValue);
item.children = [descriptionObject];
sendJson(myValue);
callback(result);
}
} catch(ignored){
}
} return result;
}
希望你能帮助我。
答案 0 :(得分:0)
尝试这样的事情:
for (var i in obj) {
if (obj[i] === null || obj[i] === undefined) {
delete obj[i];
}
}
obj
是您的JSON对象。
答案 1 :(得分:0)
您可以使用underscore
模块并使用其compact
方法。
答案 2 :(得分:0)
你可以删除像这样的空值
for (var ite in ObjJson)
{
if(ObjJson[ite]==null)
{
console.log('ys null');
delete ObjJson[ite];
}
}
答案 3 :(得分:0)
尝试使用underscore.js
_.compact(array)
它将删除所有null,false,undefined等值。
使用underscore.js而不是自己编写循环或其他东西的优点是下划线.js函数将比你的循环更快,并且错误的可能性会更小。