JSON.parse()返回[object Object](Node.Js)

时间:2019-02-21 04:57:08

标签: javascript node.js asynchronous node-modules

我已经在节点模块上工作了很长时间,并且意识到如果我想要一个同步和异步功能,我将不得不以一种不同的方式来调用该功能。

就在我调用回调函数之前,如果我进行console.log记录,它可以正常工作并作为对象输出。记录typeof也表示它是一个对象。但是,一旦到达另一端,到test.js文件,它总是输出为

  

[对象对象]

如果我记录了typeof,则表示它是一个对象。如果我尝试记录它的任何值,它将无法工作。这样的两个对象组成的数组

  

[对象对象],[对象对象]

如果我使用JSON.stringify(),它可以正常工作,但我想将其输出为已解析。

注意:我仍然可以访问文件中的值。

代码:

test.js(我的测试文件)

var val;
instances.findInstance(config, function(err, res){
 if (err){
   arkin.error(err);
 }
 val = res;
});

console.log('\n\nOUT\n' + val.failures[0].failure);

index.js(函数将位于其中的文件)

module.exports.findInstance = async function(config, callback){
  var returned = instances.find(config);

  const errorJson = JSON.parse(fs.readFileSync(__dirname + '/error.json', 'utf8'));

  end(); //Deletes the JSON files

  if (globalError === true){
    let err = new Error(JSON.stringify(errorJson));
    if (!err){
      err = 'An unknown error occured';
    }
    returned = undefined;
    callback(err, returned);
  }else{
    let err = undefined;
    callback(err, returned);
  }
}

main.js(先前的index.js。用于处理退货的代码段)

  //RESULTS
  let result = JSON.parse(fs.readFileSync('./results.json', 'utf8'));

  if (globalError === true){
    return 'ERROR';
  }else{
    return result;
  }

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我有一个简单的答案,即我们使用JSON.parse()来解析字符串。

来自Web服务器的数据始终是字符串。要将其转换为对象,我们使用此parse方法。

但是在您的问题中,我认为服务器没有任何内容。如果没有来自服务器的数据,则此JSON.parse()方法将返回默认参数。即[Object Object]

这是我的观点。请检查一次。

答案 1 :(得分:0)

您应使用console.dir查看对象的属性。

MDN console.dir

  

显示指定JavaScript对象的属性的交互式列表。输出显示为带有显示三角形的层次结构列表,可让您查看子对象的内容。