问题描述在使用以下代码获取动态对象并转换成 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 格式(如下格式一)并不是我需要的格式:{ "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 插件的数据源:[{ "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}]你期待的结果是什么?请教一下如何转换成格式二,或者如何将格式一的数据用于 DataTables 的数据源??注意我这是动态生成的匿名对象,预先不知道会有哪些列,无法显式初始化列,需要动态生成类似格式二的 Json,然后用类似以下 JS 初始化 DataTables$('#example').dataTable({ "data": dataObject[0].DATA, "columns": dataObject[0].COLUMNS });
1 回答
慕的地6264312
TA贡献1817条经验 获得超6个赞
格式一转化为格式二:
let data = {
"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
}
function trans(source) {
let columns = []
let data = []
let keys = []
source.data.forEach((cur, i) => {
if (i === 0) {
keys = Object.keys(cur)
columns = keys.map(key => ({title: key}))
}
data.push(keys.map(key => cur[key]))
})
return [{
COLUMNS: columns,
DATA: data,
draw: source.draw
}]
}
trans(data)
添加回答
举报
0/150
提交
取消