将函数的范围注入JSON.parse

我有一堆JSON文件,我需要parsing(在节点),但许多文件有这样的事情:

"_id" : NumberLong(528000021) 

NumberLong是超出JSON文件范围的函数。 当我运行JSON.parse时,我得到一个错误(可以理解),它发现一个意外的标记。 有没有办法创build一个函数NumberLong并将其注入parsing的范围?

– 编辑 –

给@Svabael这个问题上的答案业力,但在这里好奇的是我最终解决了这个问题。 我为出现在“JSON”中的任何函数创build了GLOBAL函数,然后创build了一个模块然后需要它。

 #!/usr/bin/env node var fs = require('fs'); GLOBAL.ISODate = function(x){return x}; GLOBAL.NumberLong = function(x){return x}; var source = "./JSONFiles/"; var target = "./JSONModules/"; for(var i=2;i<process.argv.length;i++) { var fn = process.argv[i]; var sn = source + fn; var sd = fs.readFileSync(sn,'utf8'); var tn = target + fn.replace('.json','.js'); var td = "module.exports = " + sd; fs.writeFileSync(tn,td); var json = require(tn); //json now has the data } 

要调用上面的脚本,它是一个bash单行:

 ls JSONFiles | xargs ./json2modules.js 

这不是一个有效的JSON:

 { "_id" : NumberLong(528000021) } 

这是一个有效的JSON:

 { "_id" : "NumberLong(528000021)" } 

我认为你正试图parsing一个javascript对象,你有错误是正常的。 如果是这样,那么你根本就不需要parsing它。