2014-02-18 1 views
2

Я использую API графического рендеринга для возврата данных в формате JSON в node.js, который я бы хотел передать Рикшу для графического отображения. Я использую grockets.js для передачи данных клиенту через socket.io. Я проверил Rickshaw с socket.io успешно, передав ручные данные, используя один из своих примеров. Проблема в том, что формат графического формата JSON не является тем, что ожидает Рикша, и я не уверен, как его конвертировать.Преобразование графического выходного массива JSON в формат, совместимый с Rickshaw Graph

выход

Графит выглядит так:

[ 
    { 
     "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 } 
     ] 
    } 
] 

Я прав, говоря, что это массив объектов? Любая помощь или руководство будут действительно оценены!

Спасибо!

ответ

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

+0

Спасибо за быстрый ответ Matt, что это именно то, что я после. Однако по какой-то причине myData [0] .datapoints.map показывается как неопределенный, когда я запускаю это ... Любая идея, почему это было бы? Я зарегистрировал myData для консоли, чтобы проверить его в том формате, который я описал, и он выглядит так же, как ваш скрипт, что странно. – user2576960

+1

Итак, я думаю, это потому, что он передается внутри функции как строка, а не объект, поэтому я не могу ее сопоставить. Должен ли я исправить это с помощью JSON.parse? – user2576960

+0

@ user2576960: Да, 'JSON.parse' должен это сделать. –