datatable和json是常用的數(shù)據(jù)格式,datatable適合于展現(xiàn)復(fù)雜的結(jié)構(gòu)數(shù)據(jù),而json則是一種輕量級的數(shù)據(jù)交換格式。在前端開發(fā)中,我們常常需要將datatable和json進(jìn)行互轉(zhuǎn)。下面讓我們來看看如何實(shí)現(xiàn)。
首先,將datatable轉(zhuǎn)成json數(shù)據(jù),我們可以使用以下代碼:
function datatableToJson(dataTable) { var data = []; var headers = []; for (var i = 0; i< dataTable.getNumberOfColumns(); i++) { headers[i] = dataTable.getColumnLabel(i); } for (var i = 0; i< dataTable.getNumberOfRows(); i++) { var rowData = {}; for (var j = 0; j< headers.length; j++) { rowData[headers[j]] = dataTable.getValue(i, j); } data.push(rowData); } return JSON.stringify(data); }
以上代碼定義了一個(gè)函數(shù),接受一個(gè)datatable作為參數(shù),輸出json字符串。該函數(shù)首先獲取datatable的列頭,并將其存入headers數(shù)組中。然后,遍歷每一行數(shù)據(jù),將每行數(shù)據(jù)存入一個(gè)對象中,對象的屬性名為headers數(shù)組中對應(yīng)列頭的值。最后將每個(gè)對象push到data數(shù)組中,將data數(shù)組轉(zhuǎn)為json字符串并返回。
接下來,我們看看如何將json數(shù)據(jù)轉(zhuǎn)成datatable。代碼如下:
function jsonToDataTable(json) { var data = JSON.parse(json); var dataTable = new google.visualization.DataTable(); var headers = []; for (var key in data[0]) { headers.push(key); dataTable.addColumn(typeof data[0][key], key); } for (var i = 0; i< data.length; i++) { var row = []; for (var j = 0; j< headers.length; j++) { var value = data[i][headers[j]]; row.push(value); } dataTable.addRow(row); } return dataTable; }
以上代碼定義了一個(gè)函數(shù),接受一個(gè)json字符串作為參數(shù),輸出一個(gè)datatable對象。該函數(shù)首先將json字符串解析成一個(gè)對象數(shù)組,根據(jù)對象的屬性動(dòng)態(tài)添加datatable的列。然后,遍歷每個(gè)對象,將該對象的屬性值存入一個(gè)數(shù)組中,作為該行數(shù)據(jù),并添加到datatable中。最后返回datatable對象。
以上就是如何實(shí)現(xiàn)datatable和json的互轉(zhuǎn)的方法。希望對大家在前端開發(fā)中有所幫助。