我正在尝试创建一个通过删除jQuery对象和null对象,字符串来清除JSON对象的函数。
的 CODE:
JSON.clean = function (object) {
/// <summary>Removes jQuery and null values from json object.</summary>
var filter = function (obj, doArrays) {
$.each(obj, function (key, value) {
if (value === "" || value === null) {
delete obj[key];
} else if (Object.prototype.toString.call(value) === '[object Object]') {
filter(value);
} else if (doArrays || Array.isArray(value)) {
obj[key] = filterArray(value);
}
});
return obj;
};
var filterArray = function (obj) {
var result = [];
for (var i = 0; i < obj.length; i++) {
result.push(filter(obj[i], false));
}
return result;
};
var result;
if ($.isArray(object)) {
result = [];
for (var i = 0; i < object.length; i++) {
result.push(filter(object[i]));
}
} else {
result = filter(object);
}
return result;
};
的问题:
尝试清理JSON对象中的数组时代码崩溃了。
我知道改变这样的数组是错误的,但这纯粹是指数组中的JSON对象。
我对这个问题的建议是等到阵列的清洁工作完成
我不知道如何在Javascript中实现这一点,所以我希望你们中的任何人都可以提供帮助!
我把这个来源用于主要想法:
How do I remove all null and empty string values from a json object?
答案 0 :(得分:0)
您可以使用JSON.stringify,replacer方法转换为字符串并删除null,然后从字符串转换回JSON。
一些有用的链接
答案 1 :(得分:-1)
var reqArr = {
"a": {
"id": "1",
"name": '',
"first_name": "Jason",
"last_name": "Davis",
"is_admin": "1",
"gravatar": "31b64e4876d603ce78e04102c67d6144"
},
"b": '',
"c": {
"id": "1702c3d0-df12-2d1b-d964-521becb5e3ad",
"name": "Jeff",
"first_name": "",
"last_name": "",
"is_admin": "1",
"gravatar": "5359bf585d11c5c35602f9bf5e66fa5e"
}
};
for(var key in reqArr) {
if (reqArr[key] == undefined || reqArr[key] == '') {
delete reqArr[key];
}
for(var inKey in reqArr[key]) {
if (reqArr[key][inKey] == undefined || reqArr[key][inKey] == '') {
delete reqArr[key][inKey];
}
}
}