【问题标题】:JSON.parse() returns [object Object] (Node.Js)JSON.parse() 返回 [object Object] (Node.Js)
【发布时间】:2019-02-21 13:20:49
【问题描述】:

我已经在 node 模块上工作了很长一段时间,并意识到如果我想要一个同步和异步函数,我必须用不同的方式来调用函数。

就在我调用回调函数之前,如果我 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;
  }

感谢您的帮助!

【问题讨论】:

  • error.json 文件是什么样的?您能否编辑您的问题以包含一个示例?
  • 另外,你为什么将async 函数与回调混合在一起?
  • @Soviut,error.json 文件看起来像这样:{"errorBool": false} 除非有自定义错误,在这种情况下它看起来像这样:{"errorBool": true, "msg": 'A string'}(我也会编辑我的问题)。另外,这是我第一次尝试创建async 函数,所以我正在试验。

标签: javascript node.js asynchronous node-modules


【解决方案1】:

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

MDNconsole.dir

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

【讨论】:

    【解决方案2】:

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

    来自网络服务器的数据总是一个字符串。要将其转换为对象,我们使用此 parse 方法。

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

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

    【讨论】:

    • “如果没有来自服务器的数据”在现实中是什么意思? JSON.parse('')(空字符串)不返回 [object Object]。您在这里指的是什么“默认参数”?
    猜你喜欢
    • 2018-05-24
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多