如何反转JSON对象的层次结构?

NEO*_*JPK 8 javascript json object

我怎么能使用javascript"从内到外"从服务器API收到的JSON对象?

示例输入

[
    {
        "id": 7,
        "idAsignacion": 9,
        "idPregunta": 4,
        "cumplimiento": 1,
        "observacionNumeral": 20,
        "observacionEscrita": "HOLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
        "rutaObservacionDocumental": "1/1/1/1/4",
        "created_at": "2017-01-31 18:26:44",
        "updated_at": "2017-01-31 18:26:44",
        "traer_preguntas": {
            "id": 4,
            "idRequisito": 1,
            "ordenPreguntas": 1,
            "pregunta": "jojgpofdkñkñdkgñk",
            "tecnicaAuditoria": "Observación",
            "escrita": 1,
            "numeral": 1,
            "documental": 1,
            "estado": 0,
            "created_at": "2017-01-31 15:42:41",
            "updated_at": "2017-01-31 15:42:41",
            "obtener_requisitos": {
                "id": 1,
                "ordenRequisito": 1,
                "idDimension": 1,
                "nombreRequisito": "Requisito uno",
                "estado": 0,
                "created_at": "2017-01-30 15:19:02",
                "updated_at": "2017-01-30 15:19:02",
                "obtener_dimensiones": {
                    "id": 1,
                    "ordenDimension": 1,
                    "dimension": "Dimension UNO",
                    "estado": 0,
                    "created_at": "2017-01-30 15:18:48",
                    "updated_at": "2017-01-30 15:18:48"
                }
            }
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

期望的输出

"obtener_dimensiones": {
    "id": 1,
    "ordenDimension": 1,
    "dimension": "Dimension UNO",
    "estado": 0,
    "created_at": "2017-01-30 15:18:48",
    "updated_at": "2017-01-30 15:18:48""obtener_requisitos": {
        "id": 1,
        "ordenRequisito": 1,
        "idDimension": 1,
        "nombreRequisito": "Requisito uno",
        "estado": 0,
        "created_at": "2017-01-30 15:19:02",
        "updated_at": "2017-01-30 15:19:02",
        "traer_preguntas": {
            "id": 4,
            "idRequisito": 1,
            "ordenPreguntas": 1,
            "pregunta": "jojgpofdkñkñdkgñk",
            "tecnicaAuditoria": "Observación",
            "escrita": 1,
            "numeral": 1,
            "documental": 1,
            "estado": 0,
            "created_at": "2017-01-31 15:42:41",
            "updated_at": "2017-01-31 15:42:41",
            {
                "id": 7,
                "idAsignacion": 9,
                "idPregunta": 4,
                "cumplimiento": 1,
                "observacionNumeral": 20,
                "observacionEscrita": "HOLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
                "rutaObservacionDocumental": "1/1/1/1/4",
                "created_at": "2017-01-31 18:26:44",
                "updated_at": "2017-01-31 18:26:44",

            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何将最后一个元素变成第一个元素,依此类推,直到每个"child"属性成为它的原始父元素的父元素?

Mah*_*ouh 3

输入:

\n\n
obj = [{\n    "id": 7,\n    "idAsignacion": 9,\n    "idPregunta": 4,\n    "cumplimiento": 1,\n    "observacionNumeral": 20,\n    "observacionEscrita": "HOLAAAAAAAAAAAAAAAAAAAA",\n    "rutaObservacionDocumental": "1/1/1/1/4",\n    "created_at": "2017-01-31 18:26:44",\n    "updated_at": "2017-01-31 18:26:44",\n    "traer_preguntas": {\n        "id": 4,\n        "idRequisito": 1,\n        "ordenPreguntas": 1,\n        "pregunta": "jojgpofdk\xc3\xb1k\xc3\xb1dkg\xc3\xb1k",\n        "tecnicaAuditoria": "Observaci\xc3\xb3n",\n        "escrita": 1,\n        "numeral": 1,\n        "documental": 1,\n        "estado": 0,\n        "created_at": "2017-01-31 15:42:41",\n        "updated_at": "2017-01-31 15:42:41",\n        "obtener_requisitos": {\n            "id": 1,\n            "ordenRequisito": 1,\n            "idDimension": 1,\n            "nombreRequisito": "Requisito uno",\n            "estado": 0,\n            "created_at": "2017-01-30 15:19:02",\n            "updated_at": "2017-01-30 15:19:02",\n            "obtener_dimensiones": {\n                "id": 1,\n                "ordenDimension": 1,\n                "dimension": "Dimension UNO",\n                "estado": 0,\n                "created_at": "2017-01-30 15:18:48",\n                "updated_at": "2017-01-30 15:18:48"\n            }\n        }\n    }\n}];\n
Run Code Online (Sandbox Code Playgroud)\n\n

代码:

\n\n
rd(obj[0])\nnewObj = {}\nkn1 = Object.keys(th[2])\nnewObj[kn1] = th[2][kn1]\nkn2 = Object.keys(th[1])\nnewObj[kn1][kn2] = th[1][kn2]\nkn3 = Object.keys(th[0])\nnewObj[kn1][kn2][kn3] = th[0][kn3]\nnewObj[kn1][kn2][kn3].root = thr\nconsole.log(JSON.stringify([newObj], null, 4));\n\nfunction rd(mo, od) {\n    if (typeof(od) === "undefined") {th = {}; od = 0}\n    else {od++}\n    Object.keys(mo).forEach(function(k) {\n        if (typeof(mo[k]) === "object") {\n            console.group("depth=" + od + " : " + k + "(" + Object.keys(mo[k]).length + ")");\n            rd(mo[k], od)\n            console.groupEnd();\n            if (typeof(th[od]) === "undefined") th[od] = {}\n            th[od][k] = mo[k]\n            Object.keys(th[od][k]).forEach(function(ik) {\n              if (typeof(th[od][k][ik]) === "object") {\n                delete th[od][k][ik]\n              }\n            })\n        } else {\n            console.log("depth=" + od + " : " + k)\n            if (od === 0) {\n                if (typeof(thr) === "undefined") thr = {}\n                thr[k] = mo[k]\n            }\n        }\n    });\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

代码的第二部分可以得到很大改进,如果需要,我可以对其进行处理。\n我添加了密钥名称根以使 JSON 有效

\n\n

输出:

\n\n
[\n    {\n        "obtener_dimensiones": {\n            "id": 1,\n            "ordenDimension": 1,\n            "dimension": "Dimension UNO",\n            "estado": 0,\n            "created_at": "2017-01-30 15:18:48",\n            "updated_at": "2017-01-30 15:18:48",\n            "obtener_requisitos": {\n                "id": 1,\n                "ordenRequisito": 1,\n                "idDimension": 1,\n                "nombreRequisito": "Requisito uno",\n                "estado": 0,\n                "created_at": "2017-01-30 15:19:02",\n                "updated_at": "2017-01-30 15:19:02",\n                "traer_preguntas": {\n                    "id": 4,\n                    "idRequisito": 1,\n                    "ordenPreguntas": 1,\n                    "pregunta": "jojgpofdk\xc3\xb1k\xc3\xb1dkg\xc3\xb1k",\n                    "tecnicaAuditoria": "Observaci\xc3\xb3n",\n                    "escrita": 1,\n                    "numeral": 1,\n                    "documental": 1,\n                    "estado": 0,\n                    "created_at": "2017-01-31 15:42:41",\n                    "updated_at": "2017-01-31 15:42:41",\n                    "root": {\n                        "id": 7,\n                        "idAsignacion": 9,\n                        "idPregunta": 4,\n                        "cumplimiento": 1,\n                        "observacionNumeral": 20,\n                        "observacionEscrita": "HOLAAAAAAAAAAAAAAAAAAAA",\n                        "rutaObservacionDocumental": "1/1/1/1/4",\n                        "created_at": "2017-01-31 18:26:44",\n                        "updated_at": "2017-01-31 18:26:44"\n                    }\n                }\n            }\n        }\n    }\n]\n
Run Code Online (Sandbox Code Playgroud)\n