如何将JSON转换为javascript数组?
我已经将Java HashMap作为JSON传递给客户端。 生成的JSON如下所示:如何将JSON转换为javascript数组?,javascript,arrays,hashmap,timestamp,flot,Javascript,Arrays,Hashmap,Timestamp,Flot,我已经将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-02T0
{
"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时间戳X 1000
(Flot中的时间序列支持基于Javascript时间戳,即,无论何时预期或交付时间值,都会使用Javascript时间戳编号。这是一个数字,而不是日期对象。Javascript时间戳是自1970年1月1日00:00:00 UTC以来的毫秒数。这几乎与Unix时间戳相同,只是它在毫秒,所以记住乘以1000!)
我该如何转换它呢?有谁能给我指点一下:(你能做的就是迭代对象,创建一个超出你现有日期的日期对象,使用getTime()方法以毫秒为单位获取时间戳,创建一个新数组,然后将它推到主数组上。这可能不是最好的解决方案,但它会起作用 假设您的JSON对象名为obj
var mainArray = [];
for (var x in obj) {
var tmpDate = (new Date(x)).getTime();
var smallArray = [tmpDate, obj[x]];
mainArray.push(smallArray);
}
您可以做的是迭代对象,创建一个超出您已有日期的日期对象,使用getTime()方法以毫秒为单位获取时间戳,创建一个新数组,然后将其推送到主数组上。这可能不是最好的解决方案,但它会起作用 假设您的JSON对象名为obj
var mainArray = [];
for (var x in obj) {
var tmpDate = (new Date(x)).getTime();
var smallArray = [tmpDate, obj[x]];
mainArray.push(smallArray);
}
你试过什么吗?我试过:hashMap.entrySet().toArray();没用吗?我试过:hashMap.entrySet().toArray();没用为什么要将“日期(键)*100”相乘?@some_coder-因为你必须将它乘以100才能与OP的预期结果相匹配。这就像一个魅力。非常感谢,@Derek。我当然对你的内联评论感到有点尴尬,但把这当作建设性的批评。我应该更努力。谢谢你的指导!@LittleLebowski-对不起,我可能对这个问题有点太苛刻了注释部分。更改:)为什么要将“日期(键)*100”相乘?@some_coder-因为你必须将它乘以100才能与OP的预期结果相匹配。这就像一个魅力。非常感谢,@Derek。我当然对你的内联评论感到有点尴尬,但把这当作建设性的批评。我应该更努力。谢谢你的指导!@LittleLebowski-对不起,我可能对这个问题有点太苛刻了注释部分。已更改。:)