レッスン 11

値から JSON テキストを生成する

シリアライズ、キー順序、テストと API 向けの安定した出力。

生成(シリアライズ)は、メモリ上の値を走査して JSON テキストを書き出します — HTTP レスポンス、ファイルエクスポート、テスト fixture 向けです。パースの逆操作で、独自の設計判断があります。

デフォルト動作は実装によって異なる

多くのシリアライザーは:

  • undefined プロパティを省略する(JavaScript)か、明示的な null 処理を要求する
  • 文字列を自動エスケープする
  • 数値を 10 進形式で書き出す

概念的な例:

{"status": "ok", "count": 3}

statuscount フィールドを持つオブジェクトから。

キー順序と安定した出力

JSON ではオブジェクトのキー順序は意味論的に重要ではありませんが、シリアライズ後のバイト順序は次の点で重要です。

  • Git diff とスナップショットテスト
  • 生バイトに対する暗号署名
  • 正規 JSON から構築するキャッシュキー

論理的に等しい 2 つのオブジェクトが同一文字列を生成するよう、チームによってはキーをアルファベット順にソートしてからテキストを生成します。

整形 vs コンパクト生成

モード使うとき
整形(インデント付き)人間のレビュー、ドキュメント、デバッグ
コンパクトワイヤー転送、ストレージサイズが重要

同じデータは両方の形式で有効 — 正しさではなく、対象読者に基づいて選びましょう。

ラウンドトリップの考え方

理想的な流れ: 値 → テキスト → パース → 等しい値。浮動小数点数、大きな整数、カスタム型(日付、BigInt)は、規約(ISO 日付文字列、文字列エンコードされた小数)を定義しない限り、完全にラウンドトリップしないことがあります。

クライアントとサーバーが合意できるよう、API 仕様にこれらの規約を文書化しましょう。

実践したいときは関連する DevCove ツールを使えます。任意であり、このレッスンの必須部分ではありません。

関連ツールを開く

コース概要へ戻る