JSON 转 C 生成器

JSON 输入

正在加载编辑器…

生成的 C

Configuration

输入 JSON 数据以生成 C 结构体

具有管理函数的内存安全结构体

如何将 JSON 转换为 C – 分步指南

使用此 JSON 转 C 生成器,可从 JSON 示例快速生成 C 结构体,适用于嵌入式、C 库与底层集成。

  1. 步骤 1 – 粘贴 JSON 示例

    • 将具有代表性的 JSON 对象或数组粘贴到左侧编辑器中。
    • 尽量包含嵌套对象、数组和可为 null 的字段,方便正确推断类型。
    • 使用 导入 从文件、URL 或示例数据加载 JSON。
  2. 步骤 2 – 选择 C 结构体选项

    • 为根模型设置清晰的 结构体名称(例如 Root)。
    • 若希望生成解析辅助代码,可选择 JSON 库预设(例如 json-c)。
    • 检查数组与嵌套对象的表示方式(通常是指针,需要手动处理)。
  3. 步骤 3 – 检查生成的代码

    • 确认字段命名、类型推断,以及数组/对象的映射方式是否符合预期。
    • 根据需要调整 根类型名称、空值处理策略以及可选的框架选项。
    • 如果某些字段推断不准确,优化示例 JSON 后重新生成。
  4. 步骤 4 – 集成到 C 项目中

    • 将生成的 .h/.c 文件加入构建,并在需要的地方 include 头文件。
    • 根据生成内容接入解析(如有)或手动将 JSON 映射到结构体。
    • 重点关注字符串、数组与嵌套结构体的分配与释放。
  5. 步骤 5 – 复制或下载

    • 将输出复制到项目中,或下载为文件。
    • 运行格式化/代码检查工具,让代码风格与项目保持一致。
    • 若目标语言需要序列化/解析库,请在项目中添加相应依赖。

快速提示

  • 只有在能控制输入大小时才使用定长缓冲区,否则优先动态分配。
  • 明确所有权规则(谁分配、谁释放),避免内存泄漏。
  • 解析前先校验 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
}

// 生成的 C 结构体(简化)
typedef struct Metadata {
  char* plan;
} Metadata;

typedef struct Root {
  int id;
  char* name;
  char* email; // JSON 中可能为 null
  int active;
  char** roles;
  int roles_count;
  Metadata metadata;
  char* createdAt;
  double score;
  void* notes;
} Root;

相关 JSON 与 C 工具

探索更多可与本 JSON 转 C 生成器配合使用的 JSON 与 Schema 工具。

常见问题

支持哪些 C 特性?

生成器创建标准 C 结构体定义,包含内存管理函数(create 和 free),支持基本数据类型映射,并遵循 C 命名约定。

内存管理如何处理?

生成的代码包含 create_ 和 free_ 函数,用于安全的内存分配和释放。字符串字段需要手动内存分配。

支持 JSON-C 库吗?

选择 'JSON-C' 框架可以生成与 json-c 库兼容的代码,包括适当的头文件引用。

复杂数据类型如何处理?

数组映射到 void** 指针,嵌套对象映射到 void* 指针。需要根据实际需求进行类型转换和内存管理。

JSON 转 C 生成器 | JSONSwiss