system.text.jsonとは?初心者向けの基礎解説共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
system.text.jsonとは?初心者向けの基礎解説共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)


system.text.jsonとは?基本のアイデア

system.text.jsonは、Microsoftが提供する .NET 用の JSON シリアライザです。正式には System.Text.Json という名前で組み込まれており、軽量で高速なデータの読み書きに向いています。このライブラリは、従来から使われてきた Newtonsoft.Json(別名 Json.Net)と比べて、標準搭載の利点が多いのが特徴です。

なぜ System.Text.Json が注目されたのか

.NET Core 3.0 以降、System.Text.Json は標準ライブラリとして提供され、従来の Newtonsoft.Json に比べて 高速性メモリの省約アプリサイズの小ささ が評価されています。特に大量のデータを頻繁にシリアライズ/デシリアライズするアプリでは有利です。

使い方の基本イメージ

オブジェクトを JSON に変換するには、JsonSerializer クラスを使います。例えば、任意のオブジェクトを Serialize することで文字列を得られ、逆に Deserialize でオブジェクトに戻します。ここで注意したいのは、デフォルト設定ではプロパティ名が キャメルケース になる点です。もしサーバーと同じ形式でプロパティ名を使いたい場合は、設定を調整する必要があります。

JsonSerializerOptions の役割

JsonSerializerOptions はオプションを集めた設定クラスです。ここで PropertyNamingPolicyIgnoreNullValues などを設定できます。実務では、API の仕様に合わせてこのオプションを選ぶことが多いです。

よくある違いと注意点

主な違いとして、処理の速度とデフォルトの挙動、および既存コードとの互換性があります。 Newtonsoft.Json は機能が豊富で細かなカスタマイズがしやすい一方、System.Text.Json は「軽量で標準搭載」という利点があります。複雑なポリシー(例:循環参照の扱い、日付のフォーマット指定)を多く求める場合は Newtonsoft.Json を併用するケースもあります。

実務でのポイント

実践的には、Dto(データ転送用のオブジェクト)を用意して、JsonSerializerOptions で命名規則や無効値の扱いを統一するのがコツです。日付や時刻は ISO 8601 形式をデフォルトで使うことが多く、タイムゾーンの扱いにも注意が必要です。

比較表

項目System.Text.Json
主な用途データのシリアライズ/デシリアライズ、API通信のデータ処理
デフォルト挙動プロパティ名は CamelCase に変換されることが多い。日付のフォーマットは ISO 8601 が基本
長所標準搭載、高速性・低メモリ、依存性が少ない
短所機能が Newtonsoft.Json より限定的な場面がある。高度なカスタマイズには別ライブラリが必要なことも

まとめ

system.text.json は .NET の現代的な JSON 処理の基盤として欠かせない存在です。小さく速い実装を求める場面で真価を発揮します。導入時は JsonSerializerOptions を活用して、命名規則や null 値の扱いを自分のアプリに合わせて調整しましょう。


system.text.jsonの同意語

System.Text.Json
NET の標準的な JSON 処理ライブラリ。オブジェクトと JSON の変換(シリアライズ/デシリアライズ)を高速に行える。
System.Text.Json 名前空間
System.Text.Json に含まれる API が集約されている名前空間。JsonSerializer、JsonDocument などが含まれる。
JsonSerializer
JSON のシリアライズとデシリアライズの中心的なクラス。オブジェクトと JSON の相互変換を担う。
JsonSerializerOptions
シリアライズ/デシリアライズ時の挙動を細かく設定するオプションの集まり。
JsonElement
読み取り専用の JSON 値を表す構造体。JSON の要素にアクセスする際に使う。
JsonDocument
JSON 全体を DOM 的に扱い、読み取りと探索を行う API。
Utf8JsonWriter
UTF-8 形式で JSON を高性能に出力するライタークラス。
Utf8JsonReader
UTF-8 形式の JSON を段階的に読み取るリーダークラス
JsonNamingPolicy
JSON のプロパティ名の命名方針を定義する基底クラス(例: CamelCase)。
JsonNamingPolicy.CamelCase
CamelCase(キャメルケース)を適用する具体的な命名方針。
JsonPropertyNameAttribute
C# のプロパティ名を JSON 側の名前として指定する属性。
JsonIgnoreAttribute
特定のプロパティを JSON に含めないようにする属性。
JsonIgnoreCondition
JsonSerializerOptions.DefaultIgnoreCondition などで使われる、無視する条件の列挙型。
DefaultIgnoreCondition
JsonSerializerOptions の設定項目。null 値やデフォルト値を JSON に含める/含めないを決定する。
WriteIndented
true に設定すると、出力される JSON に改行とインデントが追加され、見やすくなる設定。
JsonCommentHandling
JSON 内のコメントを許可するかどうかを指定する設定。
JsonEncodedText
事前にエンコード済みのテキストを表す値型。キー名などの再利用時に有効。
JsonException
System.Text.Json の操作中に発生する例外の型。エラー処理に使う。
JsonSerializer.Serialize
オブジェクトを JSON 文字列へ変換する処理。
JsonSerializer.Deserialize
JSON 文字列をオブジェクトへ変換する処理。

system.text.jsonの対義語・反対語

Newtonsoft.Json (Json.NET)
System.Text.Jsonの主要な対抗ライブラリ。長年の実績と豊富な機能が特徴で、カスタムコンバーターや日付処理、柔軟な設定などが利点。ただし最新のSystem.Text.Jsonほどのデフォルト高性能性には時として及ばない場合があります。
XML
JSONの対になるデータ表現。タグと属性で階層と意味を表現できる反面、データ量が多く冗長になりやすい点がデメリットです。
YAML
人間に読みやすい階層表現のフォーマット。可読性は高い一方でパース処理が複雑になりがちで、実装の安定性はライブラリ依存です。
BSON
バイナリ版のJSON風フォーマット。人間には読めませんが、サイズが小さく速い伝送・保存が可能です。
MessagePack
軽量なバイナリ形式のシリアライズ。JSONよりコンパクトで高速なデータ伝送を狙えます。
Protobuf (Protocol Buffers)
Googleが開発したスキーマ必須のバイナリシリアライズ。小型・高速な点が魅力ですが、柔軟性はJSONより低く、前提となるスキーマ定義が必要です。
CSV
表形式のテキストデータ。階層的なデータ表現には不向きで、ネストをそのまま表現することは難しいです。
手動パース(Manual JSON Parsing)
ライブラリを使わず自分でJSONを解析・生成する方法。自由度は高いですが、エスケープ処理やネストの管理などバグが起きやすく、初心者には推奨されません。
XMLシリアライゼーション
XMLを用いたデータのシリアライズ・デシリアライズを指します。データ構造を表現する柔軟性はあるものの、JSONと比べて冗長性が高く扱いが複雑になることが多いです。
CBOR
Concise Binary Object Representation の略で、JSON相当のデータを二進表現で、さらにコンパクトに表現します。人間には読みにくいが、通信量を抑えたい場面に適しています。

system.text.jsonの共起語

System.Text.Json
.NET の標準ライブラリとして提供される高性能な JSON 処理ライブラリ。
JsonSerializer
オブジェクトと JSON のシリアライズ/デシリアライズを行う中心クラス。
JsonSerializerOptions
JsonSerializer の挙動を細かく設定するオプションクラス。
Deserialize
JSON 文字列を .NET オブジェクトに変換する処理。
Serialize
.NET オブジェクトを JSON 文字列へ変換する処理。
DeserializeAsync
ストリームから非同期にデシリアライズする機能。
SerializeAsync
ストリームへ非同期にシリアライズする機能。
JsonDocument
JSON を読み取り専用で解析するドキュメントモデル。
JsonElement
JsonDocument 内の個々の JSON 値を表す構造体。
JsonNode
動的に JSON を操作できるノード系 API の基盤。
JsonObject
JSON オブジェクトを表すノード。
JsonArray
JSON 配列を表すノード。
JsonValue
JsonNode の一種で、原始値を表すノード。
JsonPropertyName
出力時のキー名を指定する属性。
JsonPropertyNameAttribute
JsonPropertyName を適用する属性クラス。
JsonInclude
読み取り専用プロパティをシリアライズ対象に含める属性。
JsonIgnore
特定のプロパティをシリアライズ/デシリアライズ対象から除外する属性。
JsonIgnoreCondition
JsonIgnore の適用条件を指定する列挙型(Never/WhenWritingDefault/Always など)。
JsonConverter
カスタム変換を追加するためのコンバータの基底クラス。
JsonConverterAttribute
特定のプロパティにカスタムコンバータを適用する属性。
JsonConverterFactory
複数の型に適用可能な自動生成コンバータのファクトリ。
JsonNumberHandling
数値の取り扱いを制御する設定(例:文字列として扱う)。
JsonNamingPolicy
命名ポリシーの基底クラス(CamelCase などを提供)。
CamelCase
プロパティ名をキャメルケースに変換する命名ポリシー。
PropertyNamingPolicy
JsonSerializerOptions に設定する命名ポリシーの総称。
PropertyNameCaseInsensitive
JSON のプロパティ名を大/小文字を区別せず照合する設定。
DefaultIgnoreCondition
null 値の扱いを制御するデフォルト条件。
Utf8JsonReader
UTF-8 文字列を高速に読み取る低レベルリーダー。
Utf8JsonWriter
UTF-8 文字列を高速に書き出す低レベルライター。
JsonTokenType
JSON トークンの種類を表す列挙型。
JsonException
JSON 処理時のエラーを表す例外クラス。
JsonReaderOptions
低レベル読み取り時の設定(末尾のカンマの許容・コメント等)。
JsonDocumentOptions
JsonDocument の解析オプション(必要な場合)。
System.Text.Json.Serialization
属性・契約表現を提供するサブネームスペース。
System.Text.Json.Nodes
JsonNode 系の動的 JSON API を提供するサブネームスペース。
POCO
Plain Old CLR Object の略。データモデルを表す通常のクラス。

system.text.jsonの関連用語

System.Text.Json
.NETの公式JSONライブラリ。高速なシリアライズ/デシリアライズを提供し、軽量でパフォーマンス重視の用途に適しています。
JsonSerializer
オブジェクトとJSONの相互変換を担当する基本機能。Serializeで文字列化、Deserializeでオブジェクトへ変換します。
JsonSerializerOptions
JsonSerializerの挙動を細かく制御する設定クラス。命名規則・インデント・カスタムコンバーターの登録などを行います。
JsonDocument
読み取り専用のJSON DOM。大規模なJSONを効率的に解析して部分要素へアクセスできます。
JsonElement
JsonDocument内の1つの値を表す型。値の型取得や値の取得などに使用します。
Utf8JsonReader
ストリーミング形式の高速読み取りAPI。大容量のJSONを段階的に処理するのに適しています。
Utf8JsonWriter
ストリーミング形式の高速書き込みAPI。順次JSONを生成する場面で使用します。
JsonTokenType
Utf8JsonReaderが返すトークンの種類を表す列挙型。開始/終了オブジェクト・配列、値などを区別します。
JsonValueKind
JsonElementが扱う値の種類を表す列挙型。Object、Array、String、Number、True、False、Nullなどを表します。
JsonNode
System.Text.Json.NodesのDOM風API。JsonObject、JsonArray、JsonValueを使ってJSON木を編集できます。
JsonObject
JsonNode系のJSONオブジェクトを表すクラス。キーと値のペアを保持します。
JsonArray
JsonNode系のJSON配列を表すクラス。複数の値を順序付きで保持します。
JsonEncodedText
頻繁に使われる文字列をエンコード済みとして保持する最適化クラス。高頻度文字列操作に有用です。
JsonConverter
特定の型とJSONの変換を自分で定義するための拡張クラス。カスタム変換を実装します。
JsonConverterT
特定の型Tに対するカスタムコンバーターを作成するジェネリック版。型安全に実装できます。
JsonConverterFactory
複数の型に対応可能なカスタムコンバーターを作る際の基盤クラスです。
JsonPropertyName
プロパティ名をJSONのキー名として指定する属性。JSONのキー名を自由に設定できます。
JsonIgnore
特定のプロパティをシリアライズ/デシリアライズの対象から除外する属性です。条件付き除外も指定できます。
JsonInclude
通常は公開されていないメンバーをシリアライズ対象に含めるための属性です。
JsonPropertyOrder
JSONの出力順序を制御する属性。出力されるプロパティの順番を指定できます。
JsonNamingPolicy
命名規則を定義する基底クラス。CamelCase等のポリシーを適用できます。
JsonNamingPolicy CamelCase
CamelCaseに自動変換する命名規則。プロパティ名をキャメルケースでJSONキーにします。
DictionaryKeyPolicy
ディクショナリのキー名の命名規則を設定します。キーをどうJSON化するかを制御します。
PropertyNamingPolicy
JsonSerializerOptionsで全体の命名方針を設定します。例: CamelCase の適用。
PropertyNameCaseInsensitive
デシリアライズ時にプロパティ名の大文字小文字を区別せずに一致させます。
WriteIndented
出力するJSONをインデント付きで整形します。人間が読みやすくなります
AllowTrailingCommas
末尾のカンマを許容するオプション。仕様上は不正だが緩和したい場合に使用します。
ReadCommentHandling
JSON内のコメントの取り扱いを指定します(Allow/Skip/Disallow)。
JsonNumberHandling
数値の取り扱いをカスタマイズする設定。文字列として読む・書くなどのオプションがあります。
ReferenceHandler
オブジェクト参照情報を保持して循環参照を扱えるようにする機能。Preserveを使う場面が多いです。
JsonSerializerContext
ソース生成を利用して高速・型安全なシリアライザを提供するコンテキストです。
JsonSerializableAttribute
JsonSerializerContextでシリアライズ対象の型を指定する属性です。
JsonSourceGenerationContext
ソース生成を利用する際のコンテキストクラス。生成コードを活用してパフォーマンスを向上させます。
JsonDerivedTypeAttribute
多相/ポリモーフィックなシリアライズ時に派生型を指定する属性です。
JsonException
JSONの解析・シリアライズ中に発生する例外。エラーメッセージで原因を特定します。

system.text.jsonのおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
14420viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2396viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1062viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1020viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
918viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
888viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
823viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
817viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
789viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
775viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
706viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
670viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
585viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
559viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
553viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
543viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
505viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
480viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
463viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
456viws

新着記事

インターネット・コンピュータの関連記事