JSON.stringify()一个字符串,它是实际的NodeJS代码

时间:2016-12-29 14:27:59

标签: node.js

我正在使用NodeJS中的Readline模块,并希望解析用户编写的代码内容。意思是如果有人写道:

{
    name: "David",
    age: 34
}

我应该能够JSON.stringify(content)并获得:

{
    "name": "David",
    "age": "34"
}

如何将字符串转换为实际代码,因此可以将其解释为JavaScript对象,然后使用JSON.stringify()转换为JSON?

2 个答案:

答案 0 :(得分:1)

你问的是什么并不完全清楚,但JSON.parse()会帮助你吗?如果输入无效JSON,你会想把它包装在try catch中。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

答案 1 :(得分:1)

使这项工作的技巧是以未记录的方式使用VM模块,如下所示。

let vm = require('vm');

let script = new vm.Script('x = ' + full_content);

let sandbox = script.runInThisContext();

converted = JSON.stringify(sandbox);

基本上你必须创建一个包含字符串(JavaScript)的变量,然后通过.runInThisContext()将其转换为正确的JavaScript代码。

在这种情况下,x变量将消失"你不必考虑这个问题。但是,如果您要遵循NodeJS文档example,并使用.runInNewContext(),那么x变量就不会消失,您可以将对象(至少在我的情况下)分配给x变量。

希望这会有所帮助:)