在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)});
但是,你不必传递dataset
variables,我猜是以下内容
[{ 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....)