我正在使用Graphite Render API将JSON格式的数据返回到node.js,我想将其传递给Rickshaw进行绘图。我正在使用grockets.js通过socket.io将数据传递给客户端。我通过使用他们的一个示例传递手动数据,成功地使用socket.io测试了Rickshaw。我遇到的问题是,JITE格式的Graphite返回并不是Rickshaw所期待的,我不知道如何转换它。
石墨输出如下:
[
{
"target": "localhost_localdomain.cpu-0.cpu-idle",
"datapoints": [
[99.999698, 1392728820],
[100.000898, 1392728880],
[99.999968, 1392728940],
[99.299848, 1392732360]
]
}
]
我需要它采用这种格式:
[
{
"target": "localhost_localdomain.cpu-0.cpu-idle",
"datapoints": [
{ "x": 99.999698, "y": 1392728820 },
{ "x": 100.000898, "y": 1392728880 },
{ "x": 99.999968, "y": 1392728940 },
{ "x": 99.299848, "y": 1392732360 }
]
}
]
我是否正确地说这是一个对象数组?任何帮助或指导都会非常感激!
谢谢!
答案 0 :(得分:2)
鉴于它只是需要转换的数据点,这应该相当容易:
var myData = [{
"target": "localhost_localdomain.cpu-0.cpu-idle",
"datapoints": [
[99.999698, 1392728820],
[100.000898, 1392728880],
[99.999968, 1392728940],
[99.299848, 1392732360]
]
}];
var transformedPoints = myData[0].datapoints.map(function (pt) {
return {
x: pt[0],
y: pt[1]
};
});
myData[0].datapoints = transformedPoints;
console.log(myData);
这是fiddle