javascript - WinJS加载本地json文件

标签 javascript json file windows-8 winjs

我正在努力解决这个问题。

我找不到从我的 WinJS 应用程序的子文件夹中打开一个简单的 json 文件的方法。

我试过 Ajax 和 WinJS.xhr,都无济于事。

我也研究过使用 .NET 中的 File.Open 之类的“老式”方式打开文件,但我找不到除了 WinJS.Application.local.readText 之外的任何东西,我尝试了两个绝对和相对路径。

我已经束手无策了,有没有人有可以分享的工作片段?

最佳答案

您可以使用以下形式的 URL 引用应用程序包中的文件:

ms-appx:///data/data.json

(注意有三个 / 字符——如果你错过了第三个,你就会遇到问题)

要读取和解析包含 JSON 对象的文件,您可以使用 Windows.Storage 命名空间中的对象。分为三个步骤——获取指向文件的 StorageFile 对象,读取文件内容,然后解析 JSON 数据。这是我用来执行此操作的代码:

var url = new Windows.Foundation.Uri("ms-appx:///data/data.json");
Windows.Storage.StorageFile.getFileFromApplicationUriAsync(url).then(function (file) {
    Windows.Storage.FileIO.readTextAsync(file).then(function (text) {
        var parsedObject = JSON.parse(text);
        // do something with object
    });
});

有很多方法可以从文件中读取数据,但我发现FileIO 对象最方便。上面的代码假定文件中有一个 JSON 对象描述。如果您的文件每行包含一个对象,那么您将需要:

var url = new Windows.Foundation.Uri("ms-appx:///data/data.json");
Windows.Storage.StorageFile.getFileFromApplicationUriAsync(url).then(function (file) {
    Windows.Storage.FileIO.readLinesAsync(file).then(function (lines) {
        lines.forEach(function (line) {
            var parsedObject = JSON.parse(line);
            // do something with object
        });
    });
});

这是一个细微的变化,它使用 FileIO.readLinesAsync 方法创建一个字符串数组,每个字符串都被解析为一个 JSON 对象。

关于javascript - WinJS加载本地json文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12510870/

相关文章:

javascript - 在 Firefox 中仅对 .mp4 文件发出声音

java - Jersey 在序列化期间省略 XmlTransient 注释

python - 如何从最后一个位置重复读取文件

java - 在反向java中打印行

javascript - ES2015 模块初始化不起作用

javascript - ASP.NET - jQuery (document).ready() 函数未被触发用于用户控制

java - 在struts中使用FormFile时如何获取完整的文件路径?

php - MYSQL限制JOIN行数

java - 无法编写JSON:直接自引用导致循环

Excel 无法打开大文件