JSON是一種常用的數據交換格式,經常會被用于數據傳輸和存儲。但是,有時候我們需要把JSON做扁平化處理,以便于使用和分析。下面我們來看看如何實現JSON的扁平化。
所謂JSON扁平化,就是把多層嵌套的JSON對象轉換為只有一層的JSON對象。比如,將這樣的JSON:
{ "user": { "name": "Alice", "age": 20, "address": { "city": "Shanghai", "country": "China" } } }
轉換成如下形式:
{ "user.name": "Alice", "user.age": 20, "user.address.city": "Shanghai", "user.address.country": "China" }
實現方法如下:
function flatten(obj, prefix = '') { return Object.keys(obj).reduce((acc, k) => { const pre = prefix.length ? prefix + '.' : ''; if (typeof obj[k] === 'object' && obj[k] !== null && !Array.isArray(obj[k])) { Object.assign(acc, flatten(obj[k], pre + k)); } else { acc[pre + k] = obj[k]; } return acc; }, {}); }
以上代碼使用了遞歸的方法,遍歷JSON對象的所有屬性。如果屬性的值是一個對象,就遞歸調用flatten函數;否則,將屬性的名字和值作為一條記錄添加到結果中。
使用flatten函數,我們可以很方便地將任意JSON對象做扁平化處理,適用于傳輸、存儲和數據分析等場景。