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)
 
     
    