65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.46/5 (4投票s)

2004年10月20日

CPOL

2分钟阅读

viewsIcon

42901

downloadIcon

486

如何使用 JSON 加载和保存 JavaScript 对象中的数据。

Sample Image - UsingJSON.gif

引言

在之前的 JavaScript 正则表达式测试器 中,我提到可以使用 JSON 外部保存界面中的所有可编辑属性。现在我将解释如何实现。

附加要求

您需要从下载代码中获取 opensave.dll,该代码可以在 这篇文章 中找到。opensave.dll 文件提供了一个打开/保存对话框,用于从应用程序内部打开和保存文件,DLL 文件的安装/注册说明位于该文章的文本中。您还会发现我参考了该存档中的以下文件:file_open.GIFfile_open_pressed.GIFfile_save.GIFfile_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。

© . All rights reserved.