JavaScript JSONオブジェクト変数の階層を再帰で掘る

JavaScript JSONオブジェクト変数の階層を再帰で掘る

JavaScript で 複雑な JSON オブジェクト変数の 階層を掘って Key Value 一覧を取り出す コード例です。

下のようなJSON オブジェクト変数

{
    "key1":{
        "key1_2":{
            "key1_3":{
                "name1":"ワイオミング"
            }
        }
    },
    "key2":{
        "name2":"マヌエル",
        "array1":[1,2,3,"あ","い","う"]
    }

}

下の関数を作成する

const DigAllHierarchy = (jsonObj1, root1="") => {
    let keys = Object.keys(jsonObj1) //オブジェクトキー一覧取得
    for (let k1 in keys){
        if (typeof jsonObj1[keys[k1]] == 'object'){ // 値がオブジェクトの場合
            if (Array.isArray(jsonObj1[keys[k1]])) { // 値が配列かどうか?
                let arrayStr = ""
                for (let oneArray in jsonObj1[keys[k1]]){
                    let tmpValue = jsonObj1[keys[k1]][oneArray]
                    arrayStr += (typeof tmpValue == "number")?tmpValue + ",": "\"" + tmpValue + "\",";
                }
                console.log(root1 + keys[k1] + "=[" + arrayStr.slice(0,-1) + "]")
            } else {
                DigAllHierarchy(jsonObj1[keys[k1]], root1 + keys[k1] + ".") //次の階層 再帰 処理
            }
        }else{
            console.log(root1 + keys[k1] + "=\"" + jsonObj1[keys[k1]] + "\"");
        }
    }    
}

作成した関数を呼び出す

DigAllHierarchy({
    "key1":{
        "key1_2":{
            "key1_3":{
                "name1":"ワイオミング"
            }
        }
    },
    "key2":{
        "name2":"マヌエル",
        "array1":[1,2,3,"あ","い","う"]
    }

})

↓下のように出力されます。

2022 MJELD TECHNOLOGIES. ALL RIGHTS RESERVED