C#のWeb API開発!JSONレスポンスを扱う方法を基礎から解説
生徒
「C#でWeb APIを作るとき、相手から送られてくるJSONデータってどうやって処理すればいいんですか?」
先生
「Web API開発では、通信の標準ルールであるJSON形式を使いこなすことが不可欠ですよ。」
生徒
「そもそもJSONって何ですか?パソコン初心者でもわかるように教えてください!」
先生
「それでは、Web APIの通信とJSONの扱い方を基本から見ていきましょう。」
1. Web APIとJSONの基本を知ろう
Web APIとは、インターネットを通じてプログラム同士が情報をやり取りする窓口のようなものです。例えば、天気の情報を取得したり、データベースのデータを保存したりする際に使われます。
そして、その情報の受け渡しで最も使われているのがJSON(ジェイソン)というデータ形式です。JSONは、人間にも読み書きしやすく、コンピュータにとっても処理しやすいデータ構造です。まるで郵便物の中に宛先や内容が整理されて入っているようなものだと考えてください。
2. C#でのJSON処理に必要な準備
C#でWeb APIを開発し、JSONを扱うためには、標準で用意されているSystem.Text.Jsonという便利な道具箱(ライブラリ)を使います。昔は外部のツールが必要でしたが、現在はこれだけで十分です。
JSONは「キー」と「値」のペアでデータが管理されます。これをC#のプログラムで扱うために、データを受け入れるためのクラスという設計図を用意します。プログラミングにおいて、この設計図を定義することを「クラス定義」と呼びます。
3. JSONデータをC#のクラスへ変換する
Web APIから送られてくるJSONデータは、そのままでは単なる長い文字列です。これをプログラムで計算や表示ができるように、C#のオブジェクトという形式に変換することを「デシリアライズ」と呼びます。デシリアライズとは、分解されたデータを元の形に復元するという意味です。
以下のコード例では、JSONの文字列をC#のプログラム内で読み込む方法を紹介します。
using System.Text.Json;
// JSONデータ(文字列)
string jsonString = "{\"name\": \"田中\", \"age\": 25}";
// クラス定義
public class User
{
public string Name { get; set; }
public int Age { get; set; }
}
// デシリアライズ処理
User user = JsonSerializer.Deserialize<User>(jsonString);
Console.WriteLine(user.Name);
この処理を行うことで、文字列として存在していたデータが、プログラムで使いやすい変数という箱に収まりました。
4. 通信でWeb APIを叩くHttpClientの使い方
次に、実際にWeb APIにアクセスして通信を行う方法を学びましょう。C#ではHttpClientというクラスを使います。これは、インターネット上のサーバーに対してリクエスト(お願い)を送り、レスポンス(返事)を受け取るための道具です。
パソコンがサーバーと通信する際、HttpClientはブラウザがWebサイトを見るのと同じような役割をプログラムの中で果たしてくれます。
using System.Net.Http;
using (HttpClient client = new HttpClient())
{
// APIのURLに対してリクエストを送信
HttpResponseMessage response = await client.GetAsync("https://api.example.com/data");
// 結果が成功なら中身を取得
if (response.IsSuccessStatusCode)
{
string content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
}
ここで出てくる「非同期処理」とは、通信中にプログラム全体を止めずに、裏側で作業を進めるための技術です。これにより、Web APIの返事が来るまでの間も、画面の表示をスムーズに保つことができます。
5. JSONデータの作成とWeb APIへの送信
データを受け取るだけでなく、こちらからJSON形式のデータを送信することも可能です。これを「シリアライズ」と呼びます。シリアライズとは、C#のプログラム内にあるデータを、Web APIに送信可能なJSON形式の文字列に変換することを指します。
シリアライズを行うことで、複雑な計算結果や入力データをサーバーに保存してもらう準備が整います。
using System.Text.Json;
var newUser = new User { Name = "佐藤", Age = 30 };
string json = JsonSerializer.Serialize(newUser);
Console.WriteLine(json);
シリアライズを使えば、プログラミング初心者が手動でJSONのカッコやカンマを並べる必要はありません。自動的にルールに従った正しい形式を作ってくれるため、ミスが格段に減ります。
6. エラーハンドリングで安全な通信を
Web API開発で忘れてはならないのが、エラーの処理です。インターネット通信は、相手のサーバーが混雑していたり、URLが間違っていたりして失敗することがあります。そんな時にプログラムが突然停止しないよう、例外処理というガードレールを用意します。
try
{
// 通信処理
}
catch (HttpRequestException e)
{
Console.WriteLine("通信エラーが発生しました: " + e.Message);
}
「try-catch文」は、間違いが起きそうなコードを囲んでおき、もし失敗したら代わりに特定の指示を実行するという仕組みです。これにより、Web API開発において安定したアプリケーションを提供することが可能になります。基本的なHTTPステータスコードを理解し、エラー時には適切なメッセージを表示することが、プロとしての第一歩です。