检查是否需要JSON有效 - 节点

时间:2015-04-13 21:06:29

标签: json node.js promise require bluebird

如果我需要一个文件

require('file.json'); 

如何检查JSON是否有效?试着抓? 我现在正在使用蓝鸟承诺,所以它刚刚返回

 Promise.resolve(require('file.json')); 

和bluebird捕获如果找不到文件但我还需要检查JSON的健全性。我明白你可以把JSON.parse传递给一个可以。如果文件本身是由FS或其他任何东西返回的字符串,但我不介意缓存,并要求更快

2 个答案:

答案 0 :(得分:0)

的问题
Promise.resolve(require('file.json')); 

是以

运行
var obj = require('file.json'); 
Promise.resolve(obj); 

这意味着如果require抛出,则承诺无法捕获它。相反,我建议你做

new Promise(function(resolve){
    resolve(require('file.json'));
})

这会从promise中执行require,因此可以正确捕获抛出的错误。

答案 1 :(得分:0)

您正在寻找Bluebird try function。如果您使用resolverequire()调用可能会在其结果包含在承诺中之前抛出。

Promise.try(require, 'file.json')
Promise.try(() => require('file.json')) // Bluebird 3.0

或者使用

Promise.resolve('file.json').then(require)
// or
Promise.method(require)('file.json')