使用 JSON 实现 JavaScript 正则表达式测试器的导入/导出






3.46/5 (4投票s)
如何使用 JSON 加载和保存 JavaScript 对象中的数据。
引言
在之前的 JavaScript 正则表达式测试器 中,我提到可以使用 JSON 外部保存界面中的所有可编辑属性。现在我将解释如何实现。
附加要求
您需要从下载代码中获取 opensave.dll,该代码可以在 这篇文章 中找到。opensave.dll 文件提供了一个打开/保存对话框,用于从应用程序内部打开和保存文件,DLL 文件的安装/注册说明位于该文章的文本中。您还会发现我参考了该存档中的以下文件:file_open.GIF、file_open_pressed.GIF、file_save.GIF 和 file_save_pressed.GIF。
关注点
我已将其实现为一个 HTA,或 HTML 应用程序。这是一个看起来像普通 Windows 应用程序的浏览器窗口,并且可以完全访问本地可脚本组件(换句话说,没有浏览器安全限制)。除了原始文章中的文件之外,还需要两个新文件才能保存正在处理的正则表达式。第一个文件 regex2.hta 调用第二个文件 menu3.htm 作为附加框架。您可以将第一个文件视为替换原始的 regex2.htm,或者它替换了父框架。第二个文件 menu3.htm 包含用于将数据加载到磁盘和从磁盘加载数据的界面和函数。文件 JSON.js 包含将 RegExTest
对象导出为文本的函数。它将对象转换为 JavaScript 表示法对象,或者对象的字符串字面量。这意味着从磁盘读取时,调用一次 eval()
函数就可以得到我们的对象。只需调用一次 stringify()
函数(来自 JSON.js),就可以将我们的对象导出为文本以保存到磁盘。
加载和保存的实际代码如下所示
var strFilename = "RegEx.ret";
function open_file() {
strFilename = myFileObject.getFilename('open',strFilename,
'*.ret','RegEx Test Files (*.ret)')
if (strFilename != '') {
var aa = myFileObject.loadFile(strFilename);
eval('top.RegExTest = ' + aa + ';');
} else {
strFilename = "RegEx.ret"
};
top.CopyDown();
};
function save_file () {
top.CopyUp();
if (strFilename == '') {strFilename = "RegEx.ret"};
var strNewFilename = myFileObject.getFilename("save",
strFilename,"*.ret","RegEx Test Files (*.ret)")
if (strNewFilename != "") {
if (!myFileObject.saveFile(strNewFilename, stringify(top.RegExTest))) {
alert("failed to save file");
} else {
strFilename = strNewFilename;
};
};
};
文件内容
文件名 | 描述 |
---|---|
regex2.hta | 父框架,RegExTest 对象 |
support/menu3.htm | 用于将 RegExTest 对象保存/加载到/从磁盘的界面和函数 |
其他 | 有关详细信息,请参阅 我的另一篇文章 |
历史
首次发布于 2004-10-20。