I am trying to flatten multi level JSON object to simple output.
key2:{
keyB1:{
keyC1:{
keyD1:'value b c 1'
}
},
keyB2:{
keyC2:'value b c 2'
}
}
My output is fine in the first iteration, but the second time, the counter is not getting set. Kindly, run the code to see the problem.
function flattenInput(datainput) {
const result = {};
const callit1 = function(keylist, datainput) {
for (i in datainput) {
keylist = keylist + '.' + i;
if (typeof datainput[i] === 'object') {
return callit1(keylist, datainput[i]);
} else {
return keylist;
}
}
}
let klist = '';
for (i in datainput) {
if (typeof datainput[i] === 'object') {
klist = callit1(i, datainput[i]);
console.log(klist);
}
}
console.log(result);
}
flattenInput(input);
Expected:
key2.keyB1.keyC1.keyD1: 'value b c 1'
key2.keyB2.keyC2: 'value b c 2'
What I get:
key2.keyB1.keyC1.keyD1: 'value b c 1' (only)