概要
依存関係
NuGetでSystem.Text.JSONを追加する必要があります。
*System.Text.JSONについては以下に説明があります。 docs.microsoft.com
サンプルコード
public MainPage() { InitializeComponent(); String jsonData = GetJsonData("SampleJSON.Sample.json"); System.Console.WriteLine("jsonData = " + jsonData); // A) UserData userData = JsonSerializer.Deserialize<UserData>(jsonData); System.Console.WriteLine("userData = " + userData); // B) String jsonString = JsonSerializer.Serialize(userData); System.Console.WriteLine("jsonString = " + jsonString); // C) } private String GetJsonData(String jsonFileName) { var assembly = typeof(MainPage).GetTypeInfo().Assembly; Stream stream = assembly.GetManifestResourceStream(jsonFileName); using (var reader = new System.IO.StreamReader(stream)) { return reader.ReadToEnd(); } }
A) 以下のJSONをプロジェクト内のリソースから読み込んでいます。
{ "updated": "2020/01/01 00:00:00", "users": [ { "name": "John", "age": 32, "delete": false }, { "name": "Mike", "age": 29, "delete": true } ] }
B) JSON文字列からデコードされたUserDataクラスのインスタンスのToString()
の結果が出力されます。
userData = {updated=2020/01/01 00:00:00, users=[{name=John, age=32, delete=False}{name=Mike, age=29, delete=True}]}
UserDataクラスは以下で定義されています。
public class UserData { public string updated { get; set; } public IList<User> users { get; set; } public override string ToString() { string ret = "{updated=" + updated + ", users=["; foreach(var user in users) { ret += user.ToString(); } ret += "]}"; return ret; } } public class User { public string name { get; set; } public int age { get; set; } public bool delete { get; set; } public override string ToString() { return "{name=" + name + ", age=" + age + ", delete=" + delete + "}"; } }
C) UserDataクラスのインスタンスをJSONにエンコードした結果の文字列が出力されます。
jsonString = {"updated":"2020/01/01 00:00:00","users":[{"name":"John","age":32,"delete":false},{"name":"Mike","age":29,"delete":true}]}