在Nodejs服务上从XML到JSON

在这种情况下,我需要知道如何将XML转换为JSON,这是我正在接收的json

这是来自一个名为dataset的对象,你将在下面看到一个函数

 [{ BET: 57635034, CUSTOMER: 181645, SPORT: 'NFL', 'XX_FILL OPEN': '<element><element_type>WAGER_ACTION_BUTTON</element_type><element_call>fillOpen(57635034)</element_call><element_content/></element>', XX_VIEW: '<element><element_type>BASIC_DROPDOWN</element_type><element_call>callThisFunction()</element_call><element_content><li>1</li><li>2</li><li>3</li><li>4</li></element_content></element>', XX_CANCEL: '<element><element_type>BASIC_CHECKBOX</element_type><element_call/><element_content>1</element_content></element>' }...]... 

如你所见,有一些XML属性,我所需要的就是把这些XML元素作为json发送。

喜欢这个

 [{ BET: 57635034, CUSTOMER: 181645, SPORT: 'NFL', 'XX_FILL OPEN': {json: json}, XX_VIEW: {json: json}, XX_CANCEL: {json: json} }...]... 

这是我正在使用的Nodejs服务中的function

  pendingBetsForCustomer: function(params) { return new Promise(function(fullfill, reject) { var connection = new sql.Connection(sails.config.connections.theCap, function(err) { if (err) { reject(err); } var request = connection.request(); request.execute('[SOME_SP].[CALL_SP]', function(err, dataset) { if (err) { reject(err); } //this log returns the data I pasted above console.log(dataset); if (request.parameters.param_GRID_REPORT_ID.value !== null) { _.forEach(dataset, function(report) { fullfill(report); }); } }); }); }); } 

我这样做,但我得到了undefined:

 var parseString = require('xml2js').parseString; parseString(dataset, function(err, res{console.log(res)}); 

那么,我能做些什么来将这些XML部分转换成json?

基本上你的代码是正确的

 var parseString = require('xml2js').parseString; parseString(dataset, function(err, res{console.log(res)}); 

但是,你不必传递datasetvariables,我猜是以下内容

 [{ BET: 57635034, CUSTOMER: 181645, SPORT: 'NFL', 'XX_FILL OPEN': '<element><element_type>WAGER_ACTION_BUTTON</element_type><element_call>fillOpen(57635034)</element_call><element_content/></element>', XX_VIEW: '<element><element_type>BASIC_DROPDOWN</element_type><element_call>callThisFunction()</element_call><element_content><li>1</li><li>2</li><li>3</li><li>4</li></element_content></element>', XX_CANCEL: '<element><element_type>BASIC_CHECKBOX</element_type><element_call/><element_content>1</element_content></element>' }...]... 

你必须做的,假装dataset是上面的数组,你必须转换一个字段。

 var xml = dataset[0].XX_VIEW; var parseString = require('xml2js').parseString; parseString(xml, function(err, res{console.log(res)}); 

你也可以遍历数据集,就像我在_.forEach(dataset, function(report) {看到的_.forEach(dataset, function(report) {

在这种情况下,你可以使用报表variables来访问XX_VIEW ,所以你必须做一些像这样parseString(report.XX_VIEW, function....)