我正在将一些XML属性转换为JSON。
这是整个功能,下面我将逐步解释
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);
{ 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: [ '' ] } }
我想知道的是,我应该怎么做才能声明这些新值,而不是旧的XML属性?
答案 0 :(得分:1)
当您解析字符串时,您已经可以更改项目的XX(...)
属性:
parseString(toJsonVar, function(err, res) {
item[key] = res;
});