如何使用 JQuery 数据表显示匿名类型?

获取动态对象并使用以下代码将其转换为 Json 后:


dynamic realTimeData = db.Database.DynamicSqlQuery("exec QueryRealTimeData @treeId", new SqlParameter("@treeId", treeId));


int draw = Request["draw"] != null ? int.Parse(Request["draw"]) : 1;


var jsonDataTemp = new {

  data = realTimeData,

    draw = draw

};


return Json(jsonDataTemp, JsonRequestBehavior.AllowGet);

发现转换的Json格式(下面格式1)不是我需要的格式:


{

  "data": [{

    "B01-Rtd": 10.285,

    "001-Rtd": 7.522,

    "011-Rtd": 20.903

  }, {

    "B01-Rtd": 10.031,

    "001-Rtd": 7.518,

    "011-Rtd": 20.903

  }],

  "draw": 1

}

我实际上需要将 JQuery DataTables 的数据源转换为以下格式(格式 2):


[{

  "COLUMNS": [

    {"title": "B01-Rtd"},

    {"title": "001-Rtd"},

    {"title": "011-Rtd"}

  ],

  "DATA": [

    ["10.285", "7.522", "20.903"],

    ["10.031", "7.518", "20.903"]

  ],

  "draw": 1

}]

请问如何转换为格式2,或者如何使用格式1的数据到DataTables数据源?


注意我这个是动态生成的匿名对象,事先不知道是什么列,没有显式初始化列,需要动态生成类似两种Json格式,然后使用类似下面的JS初始化DataTables:


$('#example').dataTable({

  "data": dataObject[0].DATA,

  "columns": dataObject[0].COLUMNS

});

或者还有其他方法可以使用数据表显示匿名类型吗?


猛跑小猪
浏览 172回答 1
1回答

30秒到达战场

var dataObject = [{  "data": [{    "B01-Rtd": 10.285,    "001-Rtd": 7.522,    "011-Rtd": 20.903  }, {    "B01-Rtd": 10.031,    "001-Rtd": 7.518,    "011-Rtd": 20.903  }],  "draw": 1}];var data = [],  columns = [];if (dataObject.length && dataObject[0].data.length) {  columns = Object.keys(dataObject[0].data[0]).map(x => {    return {      title: x    }  });    dataObject[0].data.forEach((item, index) => {    var values = [];    columns.forEach(x => {       values.push(item[x.title]);    });    data.push(values);  });}console.log(columns);console.log(data);//$('#example').dataTable({//  "data": data,//  "columns": columns//});
打开App,查看更多内容
随时随地看视频慕课网APP