在现有的javascript文件中提取数组的值

时间:2014-11-25 00:48:29

标签: javascript python json node.js

我试图将javascript文件中定义的值转换为json文件,或者将这些值提取为我可以使用python处理的其他格式。有没有人知道python库,node.js包或其他用本地文件执行此操作的方法?我不能使用ajax或php来完成这项任务。

上下文:

我有一个名为file.js的javascript文件,其中没有函数,但是以下列方式定义了许多冗长的数组:

var an_array1 = new Array();
an_array[1] = {some array values 1}
...
an_array[n] = {some array values n}

var another_array = new Array();
another_array[1] = {some other array values 1}
...
another_array[m] = {some other array values m}

此文件中不包含任何函数,只包括对var的调用以及后续数组值的设置。

类似的问题提供了关注使用ajax或php的答案,但我认为我不能将这些工具用于此目的。但是,我可以使用node.js,python和任何相关的库/包。我也会尝试使用awk / sed类型的脚本,但我不认为这会在这里工作,因为我想要的数据首先需要file.js进行解析/处理。

理想的结果

最终,我想使用某种方法来处理file.js,将一个特定数组的值提取为自己的文件作为JSON,或者其他类似的格式(XML也可以。 ,甚至csv都可以工作)。 e.g:

file.json:
[{some array values 1},...,{some array values n}]

有谁知道如何做到这一点?有一些类似的问题,但是那些假设我在查询网站或其他东西,这不是这里的情况。

1 个答案:

答案 0 :(得分:1)

如果file.js文件的结构是在顶层声明所需的变量,那么这是一个可以为您执行此操作的节点文件。如果情况并非如此,您必须向我们展示file.js的确切含义。

// load filesystem module
var fs = require("fs");

// read JS file and execute it
var data = fs.readFileSync("file.js", {encoding: "utf8"});
eval(data);

// write data out to files
fs.writeFile("result1.json", JSON.stringify(an_array1));
fs.writeFile("result2.json", JSON.stringify(an_array2));

然后,您只需使用node.js运行此JS文件。

这将使用节点中的V8 JS解释器来解析JS文件中的变量。然后它将加载文件系统模块,然后将两个单独数组的JSON表示写入文件。

然后你可以编写Python来读取这些文件,将JSON解析为Python理解的形式(Python内置了JSON解析),然后用Python中的数据做任何你想做的事。