VB.NETでJSONファイルを読み書きする方法を完全ガイド!System.Text.Jsonで初心者でも簡単操作
生徒
「先生、最近よく聞くJSON(ジェイソン)っていう形式のファイルを使ってみたいのですが、VB.NETで扱うにはどうすればいいですか?」
先生
「最新のVB.NETならSystem.Text.Jsonという標準の機能を使って、とてもスマートに読み書きができますよ。」
生徒
「難しそうですね。プログラミング初心者で、パソコンにもあまり詳しくない私でも書けるようになりますか?」
先生
「もちろんです!まずはJSONがどんなものかを知るところから始めましょう。手順を追えば、きっとマスターできますよ!」
1. JSONファイルとは何か?
JSON(ジェイソン)は、インターネットの世界で最も普及しているデータの書き方の一つです。以前はCSV(カンマ区切り)が主流でしたが、今はより複雑なデータを分かりやすく整理できるJSONがよく使われています。
パソコンを触ったことがない方向けに例えると、JSONは「ラベル付きの整理箱」のようなものです。例えば、単に「田中、25」と書くのではなく、「名前:田中、年齢:25」というふうに、項目名(ラベル)と中身(値)をセットにして管理します。これにより、誰が見ても何が書いてあるか一目で分かり、データの追加や変更も非常に楽になります。
2. クラスという設計図を作ろう
VB.NETでJSONを扱う際に最も大切なのが、クラス(Class)という設計図を作ることです。設計図は、プログラムに対して「JSONの中にはどんな項目があるか」を教える役割をします。
例えば、ユーザー情報を扱いたい場合は、「名前」や「年齢」といった項目を持った「ユーザー用の型」をあらかじめ定義しておきます。これを用意しておくことで、JSONという単なるテキストデータを、プログラムが扱いやすい形式に自動的に変換できるようになります。
' ユーザー情報の設計図(クラス)
Public Class UserInfo
Public Property Name As String
Public Property Age As Integer
End Class
3. JSONファイルを書き出す(シリアル化)
プログラムの中で作ったデータをJSONファイルとして保存することを、専門用語でシリアル化と言います。これは、バラバラになっている情報を一つの文字列(テキスト)にまとめて、ファイルとして書き出せる形に整える作業のことです。
VB.NETの最新機能である System.Text.Json.JsonSerializer を使うと、驚くほど短いコードでこの作業が完了します。書き出す際は、読みやすいように改行などを入れる設定(オプション)を追加するのが一般的です。
Imports System.Text.Json
Imports System.IO
Module Module1
Sub Main()
' 1. 保存するデータを作成
Dim user As New UserInfo With {.Name = "田中太郎", .Age = 25}
' 2. JSON形式の文字列に変換する(見やすくする設定付き)
Dim options As New JsonSerializerOptions With {.WriteIndented = True}
Dim jsonString As String = JsonSerializer.Serialize(user, options)
' 3. ファイルとして保存する
File.WriteAllText("user_data.json", jsonString)
Console.WriteLine("JSONファイルの書き出しが完了しました!")
End Sub
End Module
4. JSONファイルを読み込む(逆シリアル化)
今度は、保存したJSONファイルを読み込んで、プログラムの中で使える形に戻してみましょう。この逆の作業を逆シリアル化と呼びます。テキストデータを読み取り、先ほど作った設計図(クラス)の形に当てはめる作業です。
読み込むときは、ファイルの中身を全部読み取ってから、一気にクラスの形に変換します。これにより、user.Name のように書くだけで、簡単に名前を取り出せるようになります。
' ファイルから読み込む例
Dim loadedJson As String = File.ReadAllText("user_data.json")
' 文字列をUserInfoクラスの形に戻す
Dim loadedUser As UserInfo = JsonSerializer.Deserialize(Of UserInfo)(loadedJson)
' 読み込んだ内容を表示
Console.WriteLine("名前: " & loadedUser.Name)
Console.WriteLine("年齢: " & loadedUser.Age)
5. リスト形式のJSONを扱う方法
一人分だけでなく、複数人のデータをまとめて扱いたいこともあります。その場合はリスト(List)という仕組みを使います。リストは配列と似ていますが、データの数を後から自由に増やせる非常に便利な箱です。
JSONでも [ { ... }, { ... } ] というふうに角括弧を使って複数人をまとめます。これもVB.NETなら、リストの型を指定するだけで簡単に読み書きが可能です。
' 複数人のリストを作成
Dim userList As New List(Of UserInfo)
userList.Add(New UserInfo With {.Name = "鈴木", .Age = 30})
userList.Add(New UserInfo With {.Name = "佐藤", .Age = 22})
' リスト全体をJSONに変換
Dim listJson As String = JsonSerializer.Serialize(userList)
' 保存
File.WriteAllText("users.json", listJson)
6. 日本語が文字化けする場合の対処法
JSONファイルを扱う際、日本語が \uXXXX のような謎の記号になってしまうことがあります。これはエスケープ処理と呼ばれ、コンピューターが確実に文字を伝えようとする設定なのですが、人間が見るには不便です。
この文字化けのような現象を防ぐには、エンコーダーの設定を変更します。JavaScriptEncoder.UnsafeRelaxedJsonEscaping という設定を加えることで、日本語をそのまま日本語として保存できるようになります。
7. エラーを防ぐための注意点
JSON操作でよくある失敗は、設計図(クラス)の項目名と、実際のJSONファイルの項目名が一致していないことです。例えば、クラスでは Name と書いているのに、JSONファイル側が full_name になっていると、うまく読み込めません。
また、ファイルを開くときに指定した場所にファイルが存在しないとエラーになります。これを防ぐために、事前に File.Exists を使ってファイルがあるかどうかを確認する癖をつけましょう。小さな注意で、より頑丈なプログラムを作ることができます。
8. JSON操作をマスターするメリット
JSONの読み書きができるようになると、自分のプログラムに「設定保存機能」を付けたり、インターネット上の天気予報やニュースなどの最新データを取得して利用したりできるようになります。現代のソフトウェア開発において、JSONは公用語のようなものです。VB.NETの System.Text.Json を使いこなすことは、プログラミングの世界を広げる大きな一歩になります。ぜひ、色々なデータをJSONにして保存してみてくださいね!