スキップしてメイン コンテンツに移動

.Net MAUIでJSONを読もう(1/3)

まずは普通のテキストから

えるいーだーでは初期設定ファイルをJSONファイルで設定しています

なのでこれが読めるようにならないと話にならない

Xamarin時代はNewtonsoftのJson.NETを使用していました

開発当時はマイクロソフトのサイトでもお薦めされていたのに、今見たらしれっとSystem.Textを使うように変わっている・・・・

でまあ、とりあえずMAUIで読むにはSystem.Textを使うのが本筋だよねと言うわけでまずはそもそもJSONどころか普通のファイルはどうなのよ

と思ったら実験用プロジェクトを作ってリソースどうしようかなあ
と見てみたら
/Resources/Rawの下にAboutAssets.txtと言う怪しげなファイルを発見

中身はこんな感じ

Any raw assets you want to be deployed with your application can be placed in
this directory (and child directories). Deployment of the asset to your application
is automatically handled by the following `MauiAsset` Build Action within your `.csproj`.

    <MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" />

These files will be deployed with you package and will be accessible using Essentials:

    async Task LoadMauiAsset()
    {
        using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt");
        using var reader = new StreamReader(stream);

        var contents = reader.ReadToEnd();
    }

あれ、ソースコードと説明文???
raw assets(直訳すると生資産)をこのフォルダかサブフォルダに入れるといいよ
自動的に「MauiAsset」になるよ(それか.csprojをいじってね)

ちょっと試してみるか

xamlにボタンを追加

<Button
x:Name="FileTest"
Text="ファイルテスト"
Clicked="FileTest_Clicked" />

csにコードを追加

///assets.txtに書いてあったソースコード

async Task LoadMauiAsset()
{
using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt");
using var reader = new StreamReader(stream);

var contents = reader.ReadToEnd();

Debug.WriteLine(contents);//うまく読めてるか見てみたいから追加(using System.Diagnostics;)
}

///asyncを追加する
private async void FileTest_Clicked(object sender, EventArgs e)
{
await LoadMauiAsset(); //ボタンクリックから追加した関数をコールする
}

あら、綺麗に読めちゃったね
これが最初から用意されてると言う事は非同期推奨なのかぁ

これで実行

おお、WindowsでもAndroidでも読めた

JSONの前に普通のファイルを試したら読めたので

続く

コメント