2

JavaHashMapを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 TimestampX1000です。

(Flotでの時系列サポートは、Javascriptタイムスタンプに基づいています。つまり、時間値が予期されるか渡される場合は常に、Javascriptタイムスタンプ番号が使用されます。これは数値であり、Dateオブジェクトではありません。Javascriptタイムスタンプは、以降のミリ秒数です。 1970年1月1日00:00:00UTC。これは、ミリ秒単位であることを除いて、Unixタイムスタンプとほぼ同じです。したがって、1000を掛けることを忘れないでください!)

どうすれば変換できますか?誰でも親切にご案内できますか。:(

4

2 に答える 2

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);
}
于 2013-03-05T07:13:30.277 に答える
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);

http://jsfiddle.net/DerekL/F4tst/

于 2013-03-05T07:15:52.853 に答える