JSON から C を生成

JSON 入力

エディターを読み込み中…

生成された C

Configuration

JSON データを入力して C の struct を生成します

メモリ管理関数付きの struct を生成

JSON を C に変換する方法 – 手順ガイド

この JSON→C 生成ツールを使って、組み込みシステム、C ライブラリ、低レベル連携向けに JSON サンプルから C 構造体を作成します。

  1. ステップ 1 – JSON サンプルを貼り付ける

    • 左側のエディターに代表的な JSON オブジェクトまたは配列を貼り付けます。
    • ネストしたオブジェクト、配列、null になり得るフィールドを含めて、型推論を正確にします。
    • Import を使ってファイル、URL、サンプルデータから JSON を読み込みます。
  2. ステップ 2 – C 構造体のオプションを選ぶ

    • ルートモデルの Struct Name を分かりやすく設定します(例: Root)。
    • 解析ヘルパーが欲しい場合は JSON ライブラリのプリセット(例: json-c)を選びます。
    • 配列やネストオブジェクトの表現(多くはポインタで手動処理が必要)を確認します。
  3. ステップ 3 – 生成されたコードを確認する

    • フィールド名、型、配列/オブジェクトの表現を確認します。
    • 利用可能なら Root Type Name、null の扱い、フレームワーク等のオプションを調整します。
    • 推論が違う場合は JSON サンプルを調整して再生成します。
  4. ステップ 4 – C プロジェクトに構造体を組み込む

    • 生成された .h/.c ファイルをビルドに追加し、必要な場所でヘッダーを include します。
    • (生成されていれば)パース処理を接続するか、JSON 値を手動で構造体にマッピングします。
    • 文字列、配列、ネスト構造体の確保/解放に注意します。
  5. ステップ 5 – コピーまたはダウンロード

    • 出力をプロジェクトにコピーするか、ファイルとしてダウンロードします。
    • フォーマッター/リンターを実行してコードスタイルを整えます。
    • 必要に応じて JSON の解析/シリアライズ用ライブラリを追加します。

クイックヒント

  • 入力サイズを制御できる場合以外は、固定長バッファより動的確保を優先します。
  • 所有権ルール(誰が確保し誰が解放するか)を明確にします。
  • 無効入力で部分的に確保されないよう、パース前に JSON を検証します。
出力例(簡略版)
// JSON 入力
{
  "id": 123,
  "name": "Maeve Winters",
  "email": "[email protected]",
  "active": true,
  "roles": ["admin", "editor"],
  "metadata": { "plan": "pro" },
  "createdAt": "2024-03-01T10:15:00Z",
  "score": 99.5,
  "notes": null
}

// Generated C structs (simplified)
typedef struct Metadata {
  char* plan;
} Metadata;

typedef struct Root {
  int id;
  char* name;
  char* email; // nullable in JSON
  int active;
  char** roles;
  int roles_count;
  Metadata metadata;
  char* createdAt;
  double score;
  void* notes;
} Root;

関連する JSON & C ツール

この JSON→C 生成ツールと相性の良い JSON/スキーマ関連ツールもチェックしてください。

よくある質問

どのような C 機能に対応していますか?

標準的な C struct 定義を生成し、メモリ管理用の関数(create / free)も含めます。基本的な型マッピングに対応し、C の命名規則に沿った出力になります。

メモリ管理はどのように扱われますか?

生成コードには、安全なメモリアロケーション/解放のための create_ / free_ 関数が含まれます。文字列フィールドは手動でのメモリアロケーションが必要です。

JSON-C ライブラリに対応していますか?

フレームワークに「JSON-C」を選択すると、json-c ライブラリ互換のコードを生成できます(適切なヘッダー参照を含みます)。

複雑なデータ型はどう扱われますか?

配列は void** ポインタに、ネストされたオブジェクトは void* ポインタにマップされます。必要に応じて型変換とメモリ管理を行ってください。

JSON から C を生成 | JSONSwiss