我正在使用NodeJS中的Readline模块,并希望解析用户编写的代码内容。意思是如果有人写道:
{
name: "David",
age: 34
}
我应该能够JSON.stringify(content)
并获得:
{
"name": "David",
"age": "34"
}
如何将字符串转换为实际代码,因此可以将其解释为JavaScript对象,然后使用JSON.stringify()
转换为JSON?
答案 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
变量。
希望这会有所帮助:)