关于json:使用vs代码扩展读写文件

Read and Write file using vs code extension

我正在构建一个扩展来使用vs代码扩展解析JSON。所以我需要的是,它应该能够从一个特定的文件夹中加载.json文件,并迭代文件的内容。然后,它应该允许用户从中选择几个键,从中生成一个新的JSON文件,并将其保存到任何文件夹中。

但是我找不到任何方法来读写"vs代码扩展名"中的文件。有人能帮我吗?


如果要读取文件的当前编辑状态,可以使用以下api workspace函数:

1
2
3
vscode.workspace.openTextDocument(uri).then((document) => {
  let text = document.getText();
});

这将显示文件的当前状态,包括未持久化的更改。documentTextDocument型,如果有待定的更改,则将isDirty设置为true


vscode扩展正在node.js中运行。因此,您可以在扩展中使用任何可用的node.js包/模块。例如,查看这个问题以阅读JSON。


由于扩展是在nodejs中运行的,所以您应该能够以通常的方式使用任何nodejs模块内置或由NPM安装。

出于您的目的,您可以使用内置的fs模块:https://nodejs.org/dist/latest-v6.x/docs/api/fs.html

在扩展名中,需要导入所需的模块,因此代码文件应包含以下内容:

1
let fs = require("fs");

然后以通常的方式使用这些方法,如fs.fileReadSync( filename, encoding )

请不要说有一个例外。如果安装包含已编译的二进制代码的nodejs模块,它将不会在扩展中运行,而是会看到一条错误消息,指出类似%1的内容不是有效的win32应用程序。不过,纯JavaScript模块还可以。


对于JSON,您只需要requireimport的JSON文件,例如:

1
2
const jsonObject = require('./myJSONfile.json');
// do something

对于带有注释的JSON,可以使用节点JSONC解析器。

操作完成后,可以使用nodej.js的fs模块写入磁盘。