具有复杂嵌套 json 数据属性的制表符 ajaxResponse

Tabulator ajaxResponse with complex nested json data properties

有人可以帮助通过 ajaxResponse 函数将以下 json 数据传递给 Tabulator 吗?对于如何从下面的 json 数据构建 table 的完整示例将非常有帮助。提前感谢您的帮助。

以下是来自 Chrome 控制台的数据加载错误:Also attached screen capture of Console Error

tabulator.min.js:3 数据加载错误 - 由于数据类型无效,无法处理数据 期望:数组 收到:对象 数据:

{5ofq7: {…}, l4uey: {…}, 66ute: {…}, f3wc2: {…}, v6lm2: {…}, …}

5ofq7: id: "39570" item_key: "5ofq7" name: "AustralianSuper Pty Ltd" ip: "101.112.84.10"

meta: 9665u: "AustralianSuper Pty Ltd" jrv58: "AustralianSuper High Growth" syqxv: "ISF0031AU" mbwaa: "100000" clc6v: "" og0n12: "4.47" m0tyf: "" mf8ge: "17.52" r58wq2: "12.17" af3q82: "10.37" ri3w1: "9.86" krmsm: "" f8zyy2: "5.92" kztr1: "" pi5q4: "7.35" luul4: "6.31" p9vvi: "" fi17d: "" eft3z: "" b7omg: "" 9n8sj: "" 187j5: "" 166p3: "8.71" 9k83f: "12.43" v5jn5: "14.07" 8qs59: "AustralianSuper Pty Ltd" 8j6t8: "10496" kvwkh2: "0.51" g7pnc2: "" dfka2: "" zrpgi2: "" lkg952: "" o77jo: "" 15cc6: "Multisector Aggressive" 73vew: "Superannuation Fund" n5i51: "Morningstar Aus Msec Aggressive TR AUD" jvkfe: "Open" t1yvr: "0" kcn4h: "0" hwdr8: "29.989" ivfki: "49.708" rzr0z: "2.119" 9bw4z: "2.911" 8cpa5: "4.042" 6hq0z: "6.91" 1y2l7: "1.69" yl46p: "1.69" ih8bm: "" zds53: "" v1y5k: "" fq04j: "" en2oj: "" stvhv: "" rjap92: "Admin" rjap92-value: "1"

设法拼凑出一个有效的解决方案,绝对可以由更有经验的开发人员进行改进。感谢#Arnauld 和#Felix Kling - 这个解决方案基于他们的 SO 贡献。

    <div id="example-table"></div>
    <script>
    var table = new Tabulator("#example-table", {
        autoColumns:true,
        height: 500,
        layout: "fitData",
        layoutColumnsOnNewData:true,
        ajaxURL:"https://xxxxx.com/wp-json/frm/v2/forms/22/entries?",
        ajaxResponse:function(url, params, response){
           var obj = response;
           var res = [];
           Object.keys(obj).forEach(k => {    //Convert nested objects to array of objects
               Object.keys(obj[k]).forEach(v => {
               (res[v] = (res[v] || { id: v }))[k] = obj[k][v];
                });
           });
         res=res.meta;                          //Select the required object from array
         var obj = res;
         var data =[];      //Convert object to required array format needed for Tabulator
             function toArray(obj) {     
             const result = [];
             for (const prop in obj) {
                 const value = obj[prop];
             if (typeof value === 'object') {
                result.push(value);
              }
              else {
              }
              }
        return result;
        }
    data=toArray(res);
    return data;
    },
    });
    </script>