2013-08-07 11 views
-1

Я новичок в json. У меня есть небольшая проблема, в которой можно отменить json из одного формата в другой формат. Это мой json для преобразования.конвертировать json в другой формат json

{ 
    "message": "Successfully Advisor data has been fetched.", 
    "success": true, 
    "data": { 
     "dataHeaders": ["Carrier","B2B", "EM"],  
     "dataArray": { 
      "DHL": ["DHL", "45", "5","5"], 
      "Fedex": ["Fedex","40", "7","6"], 
      "UPS" : ["UPS","30", "10","3"], 
      "TNT" : ["TNT","30", "10","3"], 
     } 
    } 
} 

Мне нужно, чтобы json был преобразован в этот формат.

[ 
{ 
    "key":"Carrier", 
    "values":[ 
    { 
     "x":"DHL", 
     "y":45 
    }, 
    { 
     "x":"Fedex", 
     "y":40 
    }, 
    { 
     "x":"UPS", 
     "y":30 
    }, 
    { 
     "x":"TNT", 
     "y":35 
    } 
    ] 
}, 
{ 

    "key":"B2B", 
    "values":[ 
    { 
     "x":"DHL", 
     "y":5 
    }, 
    { 
     "x":"Fedex", 
     "y":7 
    }, 
    { 
     "x":"UPS", 
     "y":10 
    }, 
    { 
     "x":"TNT", 
     "y":5 
    } 

    ] 
}, 

{ 

    "key":"EM", 
    "values":[ 
    { 
     "x":"DHL", 
     "y":5 
    }, 
    { 
     "x":"Fedex", 
     "y":6 
    }, 
    { 
     "x":"UPS", 
     "y":3 
    }, 
    { 
     "x":"TNT", 
     "y":5 
    } 
    ] 
} 
] 

Как я могу это сделать с помощью jquery?

+1

Прежде всего: это не работа для JQuery, но для чистого JavaScript. Во-вторых: [что вы пробовали] (http://mattgemmell.com/2008/12/08/what-have-you-tried/)? – freakish

+0

Результирующий Json отличается в соответствующих значениях, вам нужны некоторые вычисления ?? – Daniele

+0

[Parse the JSON] (http://stackoverflow.com/q/4935632/218196), выполните [модификация объекта/массива в JavaScript] (http://stackoverflow.com/q/11922383/218196) и [конвертируйте вернемся к JSON] (http://stackoverflow.com/q/2295496/218196). Если у вас есть какая-то конкретная проблема, вы можете задать вопрос. –

ответ

0

Используйте var obj = jQuery.parseJSON(), чтобы проанализировать введенную строку. Вы можете получить доступ к полям через obj. [FIELDNAME] и построить свою выходную строку.

0

Вы можете начать с чем-то вроде этого:

$.each(a.data.dataArray,function(){ 
    //use this[] with the index 
}); 

$.each(a.data.dataHeaders,function(){ 
    //use this for the headers values 
}); 

и построить свой выходной объект.

0

Как я был немного FreeTime во время обеда я дал этому выстрел, это должно заставить вас идти:

var before = { 
    "message": "Successfully Advisor data has been fetched.", 
    "success": true, 
    "data": { 
     "dataHeaders": ["Carrier","B2B", "EM"],  
     "dataArray": { 
      "DHL": ["DHL", "45", "5","5"], 
      "Fedex": ["Fedex","40", "7","6"], 
      "UPS" : ["UPS","30", "10","3"], 
      "TNT" : ["TNT","30", "10","3"], 
     } 
    } 
}; 


parseData = function (jsonData) { 
    var result = []; 
    jsonData.data.dataHeaders.forEach(function (carrier, indexHeader) { 
     var el = {} 
     el.key = carrier; 

     el.values = []; 

     // shortcut 
     dataArray = jsonData.data.dataArray; 
     // generate sub elements 
     for (arr in dataArray) { 

      // generate element 
      subEl = {}; 
      subEl.x = arr; 
      subEl.y = dataArray[arr][indexHeader + 1]; 
      // add to array 
      el.values.push(subEl); 
     } 

     // add el to result 
     result.push(el); 
    }); 
    return result; 
} 

var after = parseData(before); 

JSFiddle

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