5

私はこれに頭をぶつけています。

WinJSアプリのサブフォルダーから単純なjsonファイルを開く方法が見つかりません。

私はAjaxとWinJS.xhrを試しましたが、どちらも役に立ちませんでした。

また、.NETでFile.Openのような「昔ながらの」方法でファイルを開くことも検討しましたが、絶対と相対の両方で試したWinJS.Application.local.readText以外は見つかりませんでした。道。

私はここで私のロープの終わりにいます、誰かがあなたが共有できる実用的なスニペットを持っていますか?

4

2 に答える 2

10

次の形式のURLを使用して、アプリパッケージ内のファイルを参照できます。

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

(3つの文字があることに注意して/ください-3番目の文字を見逃すと問題が発生します)

JSONオブジェクトを含むファイルを読み取って解析するには、Windows.Storage名前空間内のオブジェクトを使用できます。3つのステップがあります-ファイルを指す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オブジェクトが最も便利だと思います。上記のコードは、ファイルに1つのJSONオブジェクトの説明があることを前提としています。1行に1つのオブジェクトを含むファイルがある場合は、次のものが必要になります。

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オブジェクトとして解析されます。

于 2012-09-20T12:55:23.517 に答える
4

データがプロジェクトの一部であり、プロジェクトタイプをコンテンツとしてマークした場合は、

WinJS.xhr({ url: "data/mydata.txt" }).then(...)

私のために働きます。この例では、mydata.txtがプロジェクト内のdataという名前のフォルダーにあると想定しています。

于 2012-09-20T12:09:40.937 に答える