簡體   English   中英

在 JavaScript 中遞歸地將 JSON 對象轉換為鍵/值數組

[英]Recursively transform a JSON object to an array of key/value in JavaScript

無論 JSON 的深度如何,如何將 JSON 轉換為 JS 中的屬性數組?

JSON

{
    "foo": {
        "bar": {
            "baz": "UP"
        }
    }
}

鍵/值屬性

{
  "foo.bar.baz": "UP"
}

一級解決方案

我當前的代碼只處理一個級別,而不是 n:

var user = {name: 'Corbin', age: 20, location: 'USA'},
    key;

for (key in user) {
    if (user.hasOwnProperty(key)) {
        console.log(key + " = " + user[key]);
    }
}

謝謝:D

基本上,如果成員是對象,則進行遞歸調用,否則,更新輸出對象:

 data = { foo: "hello", bar: { baz: { qux: "UP" }, spam: 'ham' } } function unwrap(obj, prefix) { var res = {}; for (var k of Object.keys(obj)) { var val = obj[k], key = prefix ? prefix + '.' + k : k; if (typeof val === 'object') Object.assign(res, unwrap(val, key)); // <-- recursion else res[key] = val; } return res; } console.log(unwrap(data))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM