コンソールアプリケーションを Visual Studio を使わないで、dotnet コマンドとエディタだけでつくる覚え書き。
Windows11 WSL 上で作業します。 dotnet 5.0 SDK などはインストール済であることが前提。
$ dotnet.exe new console --target-framework-override net5.0 --name MyJson
WSL上で作業しているので、dotnet コマンドには exe をつけて実行する必要あり。
この段階での 生成された MyJson ディレクトリ以下のプロジェクト構成を確認。
.
└── MyJson
├── obj/
├── Program.cs
└── MyJson.csproj
生成された MyJson/Program.cs には既に Hello, World! を出力するコードが入っています。
using System;
namespace MyJson
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
MyJson プロジェクトを実行して作動を確かめます。
$ cd MyJson
$ dotnet.exe run
Hello, World!
Hello, World! できました。
コンソールアプリが簡単にできたので、 Utf8JsonReader を使って Jsonファイルを読み込んでパースするコードを書いてみましょう。
詳細はマイクロソフトのドキュメント Utf8JsonReader を確認ください。
パースする対象となる JSONデータを example.json としてカレントディレクトリに作成しておきます。
{"hello":"world"}
この JSON データを Utf8JsonReader を使ってパースするコードを Program.cs に記述します。
using System;
using System.IO;
using System.Text.Json;
namespace MyJson
{
class Program
{
static void Main(string[] args)
{
var jsonFilePath = "example.json";
var jsonUtf8Bytes = File.ReadAllBytes(jsonFilePath);
var options = new JsonReaderOptions
{
AllowTrailingCommas = true,
CommentHandling = JsonCommentHandling.Skip
};
var reader = new Utf8JsonReader(jsonUtf8Bytes, options);
while(reader.Read())
{
Console.Write($"<{reader.TokenType}>");
switch(reader.TokenType)
{
case JsonTokenType.PropertyName:
case JsonTokenType.String:
{
string text = reader.GetString();
Console.Write(text);
break;
}
}
}
Console.WriteLine();
}
}
}
それでは実行します。
$ dotnet.exe run
<StartObject><PropertyName>hello<String>world<EndObject>
できました。