我正在尝试将json
对象转换为DataTable
,
var obj= ""
{\"Total\":28,\"Submitted\":10,\"Pending\":3,\"Confirmed\":6,\"Selected\":1,
\"Redirected\":7,\"NotSelected\":1,\"Cancelled\":2,\"Paid\":0}""
我尝试了很多代码,但似乎没有任何效果。我想尝试String --> Array--> DataTable
。但无法在数组本身上转换它
obj.replace('{','').replace('}','').split(',');
第二种方法
var value = JSON.stringify(obj);
var blkstr = [];
$.each(value, function (idx2, val2) {
blkstr.push(val2);
});
数组将被转换为
//Object
var data = new google.visualization.DataTable();
//Column Declaration
data.addColumn('string', 'Legend');
data.addColumn('number', 'count');
//Insertion
如果按照对象Property [obj.Total]
进行操作,这可能非常简单。但是这对于未来的变化很难维持。
答案 0 :(得分:0)
首先,您应该使用JSON.parse将json字符串转换为javascript对象,将JSON.stringyfy转换为其他方式。
var value = JSON.stringify(obj);
然后你可以从数组的第一个对象(如果它的数组)中获取键,然后编写函数来从数组中创建列。
function Object_keys(obj) {
var keys = [], name;
for (name in obj) {
if (obj.hasOwnProperty(name)) {
keys.push(name);
}
}
return keys;
}
var keys = Object_keys(value[0]);
for (var i=0;i<keys.length;i++){
data.addColumn('string', keys[i]);
}
但你应该有其他方法来告诉数据类型的细节。假设您有一些具有列名和数据类型的其他数组,则编写泛型函数会更容易。