将嵌套JSON从示例Eum加载到JQUERY数据表中

nbysray5  于 2023-01-27  发布在  jQuery
关注(0)|答案(1)|浏览(141)

我已经阅读了大量关于嵌套JSON的参考资料和问题,但是没有一个问题是完全相同的。
我尝试使用IBMInstana来检索我计划加载到JQUERYDataTables表中的页面加载指标。
我从Instana获得的嵌套JSON:

{
  "items" : [ {
    "name" : "/Content/Search.htm",
    "earliestTimestamp" : 1674432701496,
    "cursor" : {
      "@class" : ".IngestionOffsetCursor",
      "ingestionTime" : 1674509519588,
      "offset" : 1
    },
    "metrics" : {
      "pageLoads.sum" : [ [ 1674511200000, 79.0 ] ]
    }
  }, {
    "name" : "/Content/Home.htm",
    "earliestTimestamp" : 1674435256403,
    "cursor" : {
      "@class" : ".IngestionOffsetCursor",
      "ingestionTime" : 1674509519588,
      "offset" : 2
    },
    "metrics" : {
      "pageLoads.sum" : [ [ 1674511200000, 45.0 ] ]
    }
  } ],
  "canLoadMore" : false,
  "totalHits" : 2,
  "totalRepresentedItemCount" : 2,
  "totalRetainedItemCount" : 2,
  "adjustedTimeframe" : {
    "windowSize" : 169200000,
    "to" : 1674511200000
  }
}

以及加载它并将其添加到DataTables中的表的代码:

$(document).ready(function () {
    $('#example').DataTable({
        ajax: {
            url: 'data/daily.txt',
            dataSrc: 'items',
            
        },
        columns: [
            { data: 'cursor.offset' },
                        { data: 'name' },
            { data: 'earliestTimestamp' },
            { data: 'metrics[0]' }, 
            
        ],
        deferRender: true
    });
});

虽然整个事情很简单,即使是嵌套的cursor.offset和点,我也无法在metrics\pageLoads.sum中分配这两个值,特别是嵌套的pageLoads.sum也包含一个点,并且值放在没有引号的双方括号中。(日期和页面加载数)我想在两个单独的列,但由于无法加载它们在所有,我接着以某种方式将它们加载到一个单元格,但即使这样也不起作用。
我尝试添加pageLoads.sum(然后在引号中添加'metrics."pageLoads.sum"'),但没有帮助,DataTables抛出错误消息“请求未知参数'度量.....〈和我尝试过的变体〉。
我也试过:
{ data: 'metrics' },这将在html单元格中返回[object Object]
{ data: 'metrics[0]' }, DT没有错误,但单元格仍为空
{ data: 'metrics[, ]' }, DT没有错误,但单元格仍为空
是否有办法访问metrics\pageLoads.sum中的两个值,或者在此之前必须更改JSON结构?

rjee0c15

rjee0c151#

拆分嵌套数组的内容...

"pageLoads.sum" : [ [ 1674511200000, 45.0 ] ]

...分为两列,您可以使用以下命令:

columns: [
  { data: 'cursor.offset' },
  { data: 'name' },
  { data: 'earliestTimestamp' },
  { 
    data: 'metrics.pageLoads\\.sum',
    render: function (data, type, row) {
      return data[0][0];
    }
  },
  { 
    data: 'metrics.pageLoads\\.sum',
    render: function (data, type, row) {
      return data[0][1];
    }
  }
]

它使用了我在注解(ref.)中提到的双反斜杠,还使用了两个列呈现器来处理嵌套数组到两个单独字段的拆分。
最终结果如下所示:

相关问题