C#でオブジェクトとJSONを相互に変換する
このレッスンでは、System.Text.Jsonを使って、C#のオブジェクトをJSON文字列に変換し、その文字列からオブジェクトを作り直します。
はじめに
JSONは、特にAPIを通じてアプリどうしでデータをやり取りするときによく使われる形式です。.NETに含まれるSystem.Text.Jsonライブラリは、オブジェクトからJSONへの変換(シリアライズ、serialize)と、JSONからオブジェクトへの変換(デシリアライズ、deserialize)を高速に行います。
JsonSerializer.SerializeメソッドはレコードProductをJSON文字列に変換します。Deserialize<Product>メソッドはその文字列を読み取り、Productオブジェクトを作り直します。データが空だったり形式が間違っていたりすると結果がnullになることがあるので、プログラムはNameとPriceにアクセスするときに演算子?.を使っています。表示される結果はBook: 12.5です。
実行できる C# の例
C#
Program.cs
using System;
using System.Text.Json;
record Product(string Name, decimal Price);
class Program
{
static void Main()
{
var json = JsonSerializer.Serialize(new Product("Book", 12.5m));
var product = JsonSerializer.Deserialize<Product>(json);
Console.WriteLine($"{product?.Name}: {product?.Price}");
}
}
Book: 12.5デバッガーで練習する
大事な代入や条件にブレークポイントを置いて Debug を押し、次の行に進む前にローカル変数の値を確かめましょう。
チャレンジで練習する
このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。
- フラットな JSON の数値を合計 整数を値に持つフラットな JSON オブジェクトを解析し、値の合計を求めます。 簡単
- JSON オブジェクトを作る キーと値を JSON オブジェクト文字列に変換し、引用符とバックスラッシュを正しくエスケープします。 簡単