json - 将函数的作用域注入(inject) JSON.parse

标签 json node.js

我有一堆需要解析的 JSON 文件(在 Node 中),但许多文件都有这样的内容:

"_id" : NumberLong(528000021)

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

--编辑--

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

#!/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 对象,并且出现的错误是正常的。如果是这种情况,那么您根本不需要解析它。

关于json - 将函数的作用域注入(inject) JSON.parse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40136009/

相关文章:

java - 无法反序列化 `java.util.ArrayList` 的实例

javascript - 从函数中获取返回值然后在promise.all()中使用?

PHP数组,选择打印特定元素及其内容

php - 用于排除某些行的数据表 PHP 文件

javascript - 恢复 TypeORM 中的特定迁移

javascript - 配置错误 : Missing region in config when i am using amazon ses with Node. js

javascript - 导入类之间的关系

javascript - NodeJS、Google 日历 API 集成未经过身份验证并返回未定义,无论凭证和 token 是否存在

java - 使用 jackson 将对象转换为json时忽略未设置原始类型

node.js - NPM 注册表替代 http ://registry. npmjs.org/npm