I have below JSON data with nested objects. I want to delete the ‘id’ from this structure and return the changed JSON from the function. I have tried to do it recursively below way but not able to return the changed JSON.
var jsonStr =
{"_id":"7r0c0342e",
"user":"myuser",
"project":"abcd",
"info":{"DOMAIN":{"Department":{"profile":[{"workex":8,"name":"alex","id":82838},
{"workex":8,"name":"smith","id":84838} ]}}} };
processJSON(jsonStr);
function processJSON(jsondata) {
for (var i in jsondata) {
var row = jsondata[i];
if(typeof row == "object") {
processJSON(row);
} else if(typeof row == 'number') {
if(i == 'id') {
delete jsondata[i];
} else {
continue;
}
} else {
continue;
}
}
}
console.log(jsonStr);
How can I return the rest of the JSON from the processJSON() and hold that in a variable ? Secondly, is this the correct way to do it recursively ?
Thanks.
Advertisement
Answer
var jsonStr =
{
"_id": "7r0c0342e",
"user": "myuser",
"project": "data_mining",
"info": {
"DOMAIN": {
"Department": {
"profile": [{"workex": 8, "name": "alex", "id": 82838},
{"workex": 8, "name": "smith", "id": 84838}]
}
}
}
};
let modifedJson = JSON.parse(JSON.stringify(jsonStr));
parseJson = function (json) {
for (let key in json) {
if (key === 'id') {
delete json[key];
}
else if (typeof json[key] === 'object') {
parseJson(json[key])
}
}
}
parseJson(modifedJson)
console.log('modified',modifedJson)
console.log('original',jsonStr)