动态对象转换成指定 Json 格式的问题

问题描述

在使用以下代码获取动态对象并转换成 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

        });


青春有我
浏览 374回答 1
1回答

慕的地6264312

格式一转化为格式二: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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript