为什么TypeError上的JSON.stringify返回一个空对象

时间:2015-12-15 19:47:05

标签: javascript json node.js

我正在使用节点4.2,我正在捕获错误并在其上使用JSON.stringify。对于大多数对象,这很好。但是当抛出[TypeError:callback不是函数]时,它返回一个空对象。如果我直接控制它。它可以正常工作。

Mozilla的页面说:

  

在字符串化过程中,Boolean,Number和String对象将转换为相应的原始值,符合传统的转换语义。

try {
    ...
} catch (err) {
    console.log('error: ' + JSON.stringify(err)) // outputs {}
}

1 个答案:

答案 0 :(得分:9)

在TypeError上使用时,您将对没有enumerable属性的对象进行字符串化。

所以,如果你这样做



$decoded = json_decode($json_file2);
$comments = $decoded->data[0]->results->resultado;
$fp = fopen('stock2.csv', 'w');
foreach($comments as $comment){
   fputcsv($fp,$comment);
}

使用$decoded = json_decode($json_file2); $comments = $decoded->data[0]->results->resultado; $fp = fopen('stock2.csv', 'w'); foreach($comments as $comment){ fputcsv($fp,$comment); } 进行记录时,您正在使用,所以

stringify

此外,错误知道如何将自己变成一个字符串,所以这也适用:

var typeError = new TypeError("hey")
for(var prop in typeError) {
  console.log(prop) // this does not run
}

如果要记录对象的属性而无法使用普通日志,则可以console.dir该对象。

当您在console.log上执行此操作时,您会发现它具有valueOf属性:

enter image description here