我尝试使用带数据表的AJAX请求,但我的JSON格式错误。所以我尝试转换结构。 我有一个JSON字符串作为对象数组,如下所示:
[
{
"timestamp":"1461308319473",
"id":"1",
"value":"77"
},
{
"timestamp":"1461308458181",
"id":"2",
"value":"99"
}
]
但我需要这种结构:
{
"data": [
[
"1461308319473",
"1",
"77"
],
[
"1461308458181",
"2",
"99"
]
]
}
如何转换数组? 我想在这个命令中使用datatable:
$("#table")
.dataTable({
"ajax": {
"type": "GET",
"url": "https://url",
"dataSrc": function (jsonData) {
for (var i = 0; i < jsonData.length; i++) {
returnData.push({
'timestamp': moment.unix(jsonData[i].timestamp / 1000).format("DD.MM.YY hh:mm:ss"),
'id': jsonData[i].id,
'value': jsonData[i].value
});
}
return returnData;
},
"columns": [
{ "data": "timestamp" },
{ "data": "id" },
{ "data": "value" }
]
}
});
由于
答案 0 :(得分:1)
你可以这样做:
var keys = ['timestamp', 'id', 'value'],
data = jsonData.map(function(datum){
return keys.map(function(key){return datum[key]})
})
data = {data:data}
console.log(data)
ES6中的:
let keys = ['timestamp', 'id', 'value'],
data = jsonData.map( datum => keys.map(key => datum[key]))
data = {data}
答案 1 :(得分:1)
如果你起诉只有timestamp
,id
和value
那么
var data = [
{
"timestamp":"1461308319473",
"id":"1",
"value":"77"
},
{
"timestamp":"1461308458181",
"id":"2",
"value":"99"
}
] ;
var result = {};
result.data = data.map(function(d) {
return [
d.timestamp,
d.id,
d.value
];
});
document.write(['<pre>', JSON.stringify(result, 0, 3), '</pre>'].join(''));
答案 2 :(得分:0)
您可以使用以下示例创建一个具有data属性的对象,该对象是一个空数组,然后使用数组上的forEach()方法填充:
var objectWithArray = {'data': []};
var arrWithObject = [
{
"timestamp":"1461308319473",
"id":"1",
"value":"77"
},
{
"timestamp":"1461308458181",
"id":"2",
"value":"99"
}
]
arrWithObject.forEach(functio(v,i){
objectWithArray.data.push([v.timespam, v.id, v.value])
})