我已将Java HashMap作为JSON传递给客户端。 生成的JSON如下:
{
"2013-02-27T07:25:35.000+0000": 40,
"2013-03-01T07:25:35.000+0000": 33,
"2013-02-26T07:25:35.000+0000": 25,
"2013-02-23T07:25:35.000+0000": 54,
"2013-03-03T10:12:59.000+0000": 26,
"2013-03-02T07:12:59.000+0000": 25
}
但是为了绘制到Flot图表上,我需要输入以下格式:
[
[1328983200000, 40],
[1328983200000, 33],
[1328983200000, 25],
[1328983200000, 54],
[1328983200000, 26],
[1328983200000, 25]
];
其中第一个值是Unix Timestamp X 1000
(Flot中的时间序列支持基于Javascript时间戳,即在预期或移交时间值的任何地方,使用Javascript时间戳号。这是一个数字,而不是Date对象。一个Javascript时间戳是自1970年1月1日00:00:00 UTC以来的毫秒数。这几乎与Unix时间戳相同,除非是以毫秒为单位,所以请记住乘以1000!)
我该如何转换它?任何人都可以指导。 :(
答案 0 :(得分:2)
你可以做的是遍历对象,在你拥有的日期之外创建一个Date对象,使用getTime()方法以毫秒为单位获取时间戳,创建一个新数组,然后将其推送到主数组。这可能不是最好的解决方案,但它会起作用。
假设您的JSON对象名为obj;
var mainArray = [];
for (var x in obj) {
var tmpDate = (new Date(x)).getTime();
var smallArray = [tmpDate, obj[x]];
mainArray.push(smallArray);
}
答案 1 :(得分:2)
var list = {
"2013-02-27T07:25:35.000+0000": 40,
"2013-03-01T07:25:35.000+0000": 33,
"2013-02-26T07:25:35.000+0000": 25,
"2013-02-23T07:25:35.000+0000": 54,
"2013-03-03T10:12:59.000+0000": 26,
"2013-03-02T07:12:59.000+0000": 25
}, arr = [];
for (var key in list) {
arr.push([+new Date(key)*100, list[key]]); //One simple line of code
} //Keep trying!
console.log(arr);