JSON 平面序列化

JSON flat serialization

有什么有效的方法可以解决这个问题:

{
  person:{
    name:'John',
    address:{
      city:'England',
      street:'99',
    }
  }
}

进入这个:

{
  'person.name' :'John',
  'person.address.city':'England',
  'person.address.street':'99'
}

谢谢! Ps。我需要它来同时更新 mongo 个具有多个字段的文档,而无需替换整个对象(使用 $set)。

过度简化的示例:

function flatten(object, result = {}, path) {
  if (!(object instanceof Object)) return result[path] = object;
  for (var key in object) flatten(object[key], result, path ? path + '.' + key : key); 
  return result;
}

console.log(flatten({ person:{ name:'John', address:{ city:'England', street:'99' }}}));

console.log( flatten( [[0]] ) );

console.log( flatten( 0 ) );