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

.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の前に普通のファイルを試したら読めたので

続く

コメント

このブログの人気の投稿

ImDiskの後継アプリのAIM toolkitを試してみた

ImDiskの開発辞めちゃったらしい というわけで、じゃあ後継ソフトはあるのかと思ったらあった 遅いと言われているけど・・・ とインストールしてみた ImDiskのこの間の結果はこちら 再びRAM DISK(ImDisk)   blog.mazepin-led.com    そして今回のAIM Toolkit なんか、無茶苦茶遅くなってるな 下手するとSSDの方が速いじゃん CPUの使用状態はこんな感じ PIO転送なところは変わって無さそう まあ、遅いからと言ってその速度が体感できるのかというと出来ないんだけどね と思ったところで、なんか設定変えてみたらどうなるのだろう Allocate Memory Dynamicallyというのは、メモリを必要に応じてってことだからと思って以前試したことがあったけど、なんかImDiskのときは不安定だったんだよな  AdvancedのとこにあるUse AWE Physical Memoryというのが良くわからないけど、チェックしてみたら速くなった おお、大分速くなった。なったけど・・・・なんで? これだとImDiskよりちょっと遅いくらいになるのか もしやQuickFormatととかでも変わるのか?と思ったけどそこまでやる気も無かったので放置。速くなるわけないよね。 後は圧縮とか、取り外しメディアとかだし。   最近の性能の良いSSDのおかげで RAM DISKというものの存在意義が薄れちゃったね まあそれでとにかく速度を稼ぎたいぜって人は SoftPerfect RamDiskでも使ってください 昔はPrimo Ramdisk使ってました。当時使ってたけどなかなか良かった。 当時SSD無茶苦茶高かったし。 今はほぼ無用になってしまったが・・・ 未だにスタンダード版は8GBまでなんだな キャッシュ領域にしたいなら大人しく余ってるSSDを使った方がいいんじゃ無いかって気がするけど  おしまい

RAM DISKを使ってみた(使ったのはImDisk)

GWだし、まあちょっとラムディスクを入れてみました うちのPCはWindows11 使ったのはImDiskというRAM Disk。 まあ、この辺のインストールとかはあちこちで解説してる人がいるので適当にぐぐってくださいな で、とりあえずベンチマーク なかなかいいスピードだ で、大抵の人はブラウザのキャッシュをRAMディスクにするといいよ・・・と言うけど そもそもメインドライブがNVMeのSSDを使っている状態で、体感速度なんか上がらない(使い終わったキャッシュを再起動したら綺麗さっぱり捨て去ってくれるという利点はある)  うちで一番効果があるのは Adobe Audition というアプリ これが結構高速化する(キャッシュをちゃんとRAMディスクにしたら・・・だけど) ハイレゾ音源だと、1時間の音源が何かする度に4GBのファイルを作られてしまう なので、RAM DISKにすると、結構編集時間を短縮できる Premiere Rushも出力先をRam Diskにしておいて終わったら、SSDにコピーすると言う事をやるとかなりスピードアップになる 実はうちのPCは普段は99%のパワーで動作していて、CPUのターボブーストが掛からないようになっている 大体3.6GHz当たりで安定してるのだけど、これを100%にするとターボブースト機能がONになって一部のコアが4.5とか4.8GHzまで上がる まあ、毎回電源オプションをいじる事になるのだけどさ・・・ そうしてベンチを取ると こんな感じ とは言え、ブーストしてるからと行ってRam Diskのスピードの差を体感する事はさすがに無理 ・・・と言うかフォトショでもRAM DISKにしてよかった・・・と言うほど変わらない SSDの性能が上がってきたしもし次にPCを買い換えたらRAM DISKよりSSDの方が速いかもね  

再びRAM DISK(ImDisk)

PCに色々ゴミがたまってきたのでクリーンインストールし直した ・・ので、とりあえずある程度インストールが終わったので RAMディスクのベンチを取ってみた   RAM DISKを使ってみた(使ったのはImDisk)   blog.mazepin-led.com 前回はこんな感じでベンチ取ってたのよね 今回はこんな感じ 最初はなんか誤差のレベルだなーと思ってたけど、RND4KのWRITEが結構早くなってました CristalDiskMarkもImDiskも今日時点での最新版で試したので、まあ何か変わってるんだろう BIOSだってOSのバージョンだって変わってるしな システムディスクのSSDも変わってますがRAMやらCPUやらは当時のまま   一生懸命頑張っているCPUの様子がこれ。 基本、RAMディスクってPIO転送だからCPUのパワーをがっつり持って行ってしまう おしまい