2015-08-17 2 views
0

Хорошо, так что в моем коде я захватить блоб JSON, который выглядит следующим образом:Изменить формат JSON с помощью Javascript

[ 
    { 
     "ts": 1431736740, 
     "aggs": { 
      "DNS": { 
       "min": 20, 
       "max": 21, 
      }, 
      "SEND": { 
       "min": 102, 
       "max": 8114, 
      }, 
      "SSL": { 
       "min": 110, 
       "max": 7806, 
      }, 
      "SERVERBUSY": { 
       "min": 1360, 
       "max": 13709, 
      } 
     } 
    }, 
    { 
     "ts": 1431736680, 
     "aggs": { 
      "DNS": { 
       "min": 22, 
       "max": 24, 
      }, 
      "SEND": { 
       "min": 210, 
       "max": 8251, 
      }, 
      "SSL": { 
       "min": 117, 
       "max": 12488, 
      }, 
      "SERVERBUSY": { 
       "mn": 6462, 
       "max": 9800, 
      } 
     } 
    }, 
    { 
     "ts": 1431736620, 
     "aggs": { 
      "DNS": { 
       "min": 21, 
       "max": 22, 
      }, 
      "SEND": { 
       "min": 92, 
       "max": 12035, 
      }, 
      "SSL": { 
       "min": 111, 
       "max": 9758, 
      }, 
      "SERVERBUSY": { 
       "min": 9855, 
       "max": 14112, 
      } 
     } 
    } 
] 

и мне нужна помощь преобразовав его в тот, который выглядит следующим образом:

[ 
    { 
     "key": "DNS", 
     "values": [ 
      [ 
       0, //The first number just goes up by one. 
       20 //The second number is the value of aggs.DNS.min 
      ], 
      [ 
       1, 
       22 
      ], 
      [ 
       2, 
       21 
      ] 
     ] 
    }, 
    { 
     "key": "SEND", 
     "values": [ 
      [ 
       0, 
       102 
      ], 
      [ 
       1, 
       210 
      ], 
      [ 
       2, 
       92 
      ] 
     ] 
    }, 
    { 
     "key": "SSL", 
     "values": [ 
      [ 
       0, 
       110 
      ], 
      [ 
       1, 
       117 
      ], 
      [ 
       2, 
       111 
      ] 
     ] 
    }, 
    { 
     "key": "SERVERBUSY", 
     "values": [ 
      [ 
       0, 
       1360 
      ], 
      [ 
       1, 
       6462 
      ], 
      [ 
       2, 
       9855 
      ] 
     ] 
    } 
] 

Потому что я использую библиотеку, которая использует только JSON в этом правильном формате. Это возможно? Я нашел несколько разных вопросов, которые показывают, что вы можете изменить формат JSON, но я не уверен, что это можно сделать так резко. Любая помощь высоко ценится!!!

+0

A. Не из этого JSON, это просто объекты. B. Взгляните на lodash – Amit

+0

Это массив объектов JSON. Попробуйте использовать библиотеку Underscore для этого. http://underscorejs.org/ – Vandervidi

ответ

0

Хорошо, я хотел опубликовать то, что я понял, в случае, если это поможет кому-то:

var pagestatsObject = {}; 

var dnsValues = []; 
for(var i=0; i<bardata.length; i++){ 
    var dnsItem = bardata[i].aggs.dns.avg; 
    dnsValues.push([i, dnsItem]); 
} 


var connectValues = []; 
for(var i=0; i<bardata.length; i++){ 
    var connectItem = bardata[i].aggs.con.avg; 
    connectValues.push([i, connectItem]); 
} 


var SSLValues = []; 
for(var i=0; i<bardata.length; i++){ 
    var SSLItem = bardata[i].aggs.ssl.avg; 
    SSLValues.push([i, SSLItem]); 
} 


var sendValues = []; 
for(var i=0; i<bardata.length; i++){ 
    var sendItem = bardata[i].aggs.snd.avg; 
    sendValues.push([i, sendItem]); 
} 


var serverBusyValues = []; 
for(var i=0; i<bardata.length; i++){ 
    var serverBusyItem = bardata[i].aggs.srvbsy.avg; 
    serverBusyValues.push([i, serverBusyItem]); 
} 


var receiveValues = []; 
for(var i=0; i<bardata.length; i++){ 
    var receiveItem = bardata[i].aggs.rcv.avg; 
    receiveValues.push([i, receiveItem]); 
} 


pagestatsObject = [ 
    {"key" : "DNS", "values" : dnsValues}, 
    {"key" : "Connect", "values" : connectValues}, 
    {"key" : "SSL", "values" : SSLValues}, 
    {"key" : "Send", "values" : sendValues}, 
    {"key" : "Server Busy", "values" : serverBusyValues}, 
    {"key" : "Receive", "values" : receiveValues} 
]; 

Это не самое красивое решение, но это работает для того, что мне нужен был его.

Смежные вопросы