将XML转换为JSON后,将新的值赋给对象

我将一些XML属性转换成JSON。

这是整个function,下面我将逐步解释它

request.execute('[someSP].[spSomeSP]', function(err, dataset) { if (err) { reject(err); } if (request.parameters.param_GRID_REPORT_ID.value !== null) { _.forEach(dataset, function(items) { _.forEach(items, function(item) { for (var key in item) { if (key.indexOf('XX') === 0) { var toJsonVar = item[key], toJsonRes; parseString(toJsonVar, function(err, res) { toJsonRes = res; console.log(toJsonRes); }); } } }); }); _.forEach(dataset, function(report) { console.log(report); fullfill(report); }); } }); 

这是我在这个console.log(report);收到console.log(report);

 { BET: 57635034, CUSTOMER: 181645, SPORT: 'NFL', XX_FILL_OPEN: '<element>\r\n\t<element_type>wager_action_button</element_type>\t\r\n\t<element_name>Fill Open</element_name>\r\n\t<element_call>fillOpen(57635034)</element_call>\r\n\t<element_content></element_content>\r\n</element>', XX_VIEW: '<element>\r\n\t<element_type>betslip_selection_checkbox</element_type>\t\r\n\t<element_name></element_name>\r\n\t<element_call>addRemoveSelectionFromSlip_checkbox(1738756,0,1,1)</element_call>\r\n\t<element_content>0</element_content>\r\n</element>' } 

正如你所看到的,有一些以XX_开头的道具包含XML属性,所以必须把这些XML属性转换成这样的json

  _.forEach(dataset, function(items) { _.forEach(items, function(item) { for (var key in item) { if (key.indexOf('XX') === 0) { var toJsonVar = item[key], toJsonRes; parseString(toJsonVar, function(err, res) { toJsonRes = res; console.log(toJsonRes); }); } } }); }); 

现在这个console.log(toJsonRes); 返回这个(这是XML元素,但现在以JSON格式)

 { element: { element_type: [ 'wager_action_button' ], element_name: [ 'Fill Open' ], element_call: [ 'fillOpen(57635034)' ], element_content: [ '' ] } } { element: { element_type: [ 'betslip_selection_checkbox' ], element_name: [ '' ], element_call: [ 'addRemoveSelectionFromSlip_checkbox(1738756,0,1,1)' ], element_content: [ '0' ] } } 

所以,只是为了给你一个更好的看法:

之前:

 XX_FILL_OPEN: '<element>\r\n\t<element_type>wager_action_button</element_type>\t\r\n\t<element_name>Fill Open</element_name>\r\n\t<element_call>fillOpen(57635034)</element_call>\r\n\t<element_content></element_content>\r\n</element>' 

后:

 { element: { element_type: [ 'wager_action_button' ], element_name: [ 'Fill Open' ], element_call: [ 'fillOpen(57635034)' ], element_content: [ '' ] } } 

我想知道的是,我应该如何声明这些新值,以便将它们replace为旧的XML属性?

在parsingstring时,可以更改项目的XX(...)属性:

 parseString(toJsonVar, function(err, res) { item[key] = res; });