检查是否需要 JSON 是否有效 - 节点
check if required JSON is valid - node
如果我需要一个文件作为
require('file.json');
我该如何检查 JSON 是否有效?试着抓?
我正在使用 bluebird promises,所以现在它刚刚返回
Promise.resolve(require('file.json'));
如果找不到文件,bluebird 会捕获,但我还需要检查 JSONs 的完整性。我知道你可以将 JSON.parse 传递给 thenable 如果文件本身由 FS 或其他任何东西作为字符串返回但我不介意缓存和要求会更快
的问题
Promise.resolve(require('file.json'));
是运行为
var obj = require('file.json');
Promise.resolve(obj);
这意味着如果 require
抛出,promise 将无法捕获它。相反,我建议做
new Promise(function(resolve){
resolve(require('file.json'));
})
这从承诺内部执行 require
,因此抛出的错误将被正确捕获。
您正在寻找 Bluebird try
function。如果您使用 resolve
,require()
调用可能会在其结果包装在承诺中之前抛出。
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')
如果我需要一个文件作为
require('file.json');
我该如何检查 JSON 是否有效?试着抓? 我正在使用 bluebird promises,所以现在它刚刚返回
Promise.resolve(require('file.json'));
如果找不到文件,bluebird 会捕获,但我还需要检查 JSONs 的完整性。我知道你可以将 JSON.parse 传递给 thenable 如果文件本身由 FS 或其他任何东西作为字符串返回但我不介意缓存和要求会更快
Promise.resolve(require('file.json'));
是运行为
var obj = require('file.json');
Promise.resolve(obj);
这意味着如果 require
抛出,promise 将无法捕获它。相反,我建议做
new Promise(function(resolve){
resolve(require('file.json'));
})
这从承诺内部执行 require
,因此抛出的错误将被正确捕获。
您正在寻找 Bluebird try
function。如果您使用 resolve
,require()
调用可能会在其结果包装在承诺中之前抛出。
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')