Javascript xml2js未返回已解析的JSON
我错过了什么?即使console.log工作正常,也不会从parseXML方法返回JSON。它返回的是未定义的Javascript xml2js未返回已解析的JSON,javascript,node.js,Javascript,Node.js,我错过了什么?即使console.log工作正常,也不会从parseXML方法返回JSON。它返回的是未定义的 function parseXML(){ var parseString = require('xml2js').parseString; var str= '<Customers>\ <Customer>\ <first>JIM</first>\ <last>BEAM</last&
function parseXML(){
var parseString = require('xml2js').parseString;
var str= '<Customers>\
<Customer>\
<first>JIM</first>\
<last>BEAM</last>\
<address>22. JIM. RD.</address>\
<age>24</age>\
<age2>2.0</age2>\
<Phone>206-555-0144</Phone>\
</Customer>\
</Customers>'
parseString(str, function (err, result) {
console.log(JSON.stringify(result)); //<<<<<<<RETURNS THE JSON I EXPECTED
return JSON.stringify(result);
});
}
app.get('/*', (request, response) => {
var json=parseXML();
console.log(json) //<<<<<<RETURNS UNDEFINED
var obj=JSON.parse(json);
console.log(obj);
var jsonres= obj.Customers.Customer[0]["first"];
response.send(['Hello from Express!',jsonres])
})
函数parseXML(){
var parseString=require('xml2js')。parseString;
var str='1〕\
\
吉姆\
光束\
22.吉姆路\
24\
2.0\
206-555-0144\
\
'
parseString(str,函数(err,result){
console.log(JSON.stringify(result));//问题在于parseString
的结果是异步返回的,但您不异步处理函数调用及其结果
您可能想在Node.js和JavaScript中查看异步编程和回调是如何工作的。问题是parseString
的结果是异步返回的,但您不会异步处理函数调用及其结果
您可能想在Node.js和JavaScript中了解异步编程和回调是如何工作的。您可以通过promise和async/await实现这一点:
function parseXML() {
var parseString = require('xml2js').parseString;
var str = '<Customers>\
<Customer>\
<first>JIM</first>\
<last>BEAM</last>\
<address>22. JIM. RD.</address>\
<age>24</age>\
<age2>2.0</age2>\
<Phone>206-555-0144</Phone>\
</Customer>\
</Customers>'
return new Promise((resolve, reject) => {
parseString(str, function (err, result) {
console.log(JSON.stringify(result)); //<<<<<<<RETURNS THE JSON I EXPECTED
resolve(JSON.stringify(result))
});
})
}
app.get('/*', async (request, response) => {
var json = await parseXML();
console.log(json) //<<<<<<RETURNS UNDEFINED
var obj = JSON.parse(json);
console.log(obj);
var jsonres = obj.Customers.Customer[0]["first"];
response.send(['Hello from Express!', jsonres])
})
函数parseXML(){
var parseString=require('xml2js')。parseString;
var str='1〕\
\
吉姆\
光束\
22.吉姆路\
24\
2.0\
206-555-0144\
\
'
返回新承诺((解决、拒绝)=>{
parseString(str,函数(err,result){
console.log(JSON.stringify(result));//您可以通过promise和async/await实现这一点:
function parseXML() {
var parseString = require('xml2js').parseString;
var str = '<Customers>\
<Customer>\
<first>JIM</first>\
<last>BEAM</last>\
<address>22. JIM. RD.</address>\
<age>24</age>\
<age2>2.0</age2>\
<Phone>206-555-0144</Phone>\
</Customer>\
</Customers>'
return new Promise((resolve, reject) => {
parseString(str, function (err, result) {
console.log(JSON.stringify(result)); //<<<<<<<RETURNS THE JSON I EXPECTED
resolve(JSON.stringify(result))
});
})
}
app.get('/*', async (request, response) => {
var json = await parseXML();
console.log(json) //<<<<<<RETURNS UNDEFINED
var obj = JSON.parse(json);
console.log(obj);
var jsonres = obj.Customers.Customer[0]["first"];
response.send(['Hello from Express!', jsonres])
})
函数parseXML(){
var parseString=require('xml2js')。parseString;
var str='1〕\
\
吉姆\
光束\
22.吉姆路\
24\
2.0\
206-555-0144\
\
'
返回新承诺((解决、拒绝)=>{
parseString(str,函数(err,result){
console.log(JSON.stringify(结果));//回调的return
不会返回外部函数回调的return
不会返回外部函数感谢详细的解释-非常有用!很高兴我能帮上忙!感谢详细的解释-非常有用!很高兴我能帮上忙!