Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将JSON转换为javascript数组?_Javascript_Arrays_Hashmap_Timestamp_Flot - Fatal编程技术网

如何将JSON转换为javascript数组?

如何将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

我已经将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时间戳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-对不起,我可能对这个问题有点太苛刻了注释部分。已更改。:)