将函数的作用域注入JSON.parse



我有一堆JSON文件,我需要解析(在节点),但许多文件有这样的东西:

"_id" : NumberLong(528000021)

其中NumberLong是JSON文件作用域之外的函数。当我运行JSON时。我得到一个错误(可以理解),它发现了一个意外的令牌。是否有一种方法来创建一个函数NumberLong并将其注入解析的作用域?

——编辑——

在这个问题上给了@Svabael因果报应的答案,但对于好奇的人来说,这里是我如何解决这个问题的。我为出现在"JSON"中的任何函数创建了GLOBAL函数,然后创建了一个模块,然后需要它。

#!/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)"
}

我认为你正在试图解析一个javascript对象和错误,你有是正常的。如果是这种情况,那么根本不需要解析它。

相关内容

最新更新