Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript xml2js未返回已解析的JSON_Javascript_Node.js - Fatal编程技术网

Javascript xml2js未返回已解析的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&

我错过了什么?即使console.log工作正常,也不会从parseXML方法返回JSON。它返回的是未定义的

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
不会返回外部函数感谢详细的解释-非常有用!很高兴我能帮上忙!感谢详细的解释-非常有用!很高兴我能帮上忙!