我试图将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}]
有谁知道如何做到这一点?有一些类似的问题,但是那些假设我在查询网站或其他东西,这不是这里的情况。
答案 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中的数据做任何你想做的事。