跳到主要内容

JSON 转 Ruby Hash 与 Struct 生成器

粘 JSON 出 Ruby Hash 字面量或 Struct.new 类, 符号键或字符串键随选, null 变 nil, 嵌套照搬, 零上传。

  • 本地处理
  • 分类 格式转换
  • 适合 分享前检查文件类型、大小、元数据和明显不匹配信号。
示例:
键、nil 和 Struct 是怎么生成的

Hash 模式把 JSON 渲染成 Ruby Hash 字面量: JSON 的 null 变成 nil, true/false 原样保留, 数字照搬, 字符串用双引号并做好 Ruby 转义。键可以是简写符号 (name:)、经典箭头符号 (:name => ), 或纯字符串键 ("name" => ), 你的代码库用哪种就选哪种。Struct 模式输出 Struct.new(:a, :b) 类定义以及把它填满的实例化表达式; 每个嵌套对象会生成各自的 Struct, 按键路径命名, 对象数组则把所有元素的键折叠进一个共享 Struct, 某些元素缺的键直接传 nil。全部在浏览器里运算, JSON 不碰服务器。

这个工具能做什么

把任意 JSON 粘进来, 拿到两种形态之一的地道 Ruby 代码。Hash 模式把 JSON 渲染成 Ruby Hash 字面量: 键风格可选现代简写符号 (name: value)、 经典箭头符号 (:name => value), 或纯字符串键 ("name" => value), 每个 标量都按 Ruby 的习惯映射。JSON 的 null 变成 nil, true 和 false 原样 保留, 整数和浮点数照搬, 字符串用双引号包裹并做好 Ruby 转义, 这样 引号、换行, 或者长得像插值的井号花括号序列都不会把字面量写坏。 Struct 模式生成 Struct.new(:a, :b) 类定义以及把它填满的实例化: 每个嵌套对象抽成各自命名的 Struct, 对象数组则把所有元素的键折叠进 一个共享 Struct, 某些元素有、另一些没有的键直接传 nil。根 Struct 名 可改, keyword_init 可切, 输入和选项能拼成链接分享, 结果可一键复制 或下载 .rb 文件。全部在浏览器里运算, 你粘的 JSON 不碰服务器。

工具细节

输入
文本 + 数值 + 结构化内容
页面会根据工具类型展示文本框、数值控件、文件选择或结构化输入。
输出
即时结果 + 复制 + 下载
结果区优先给出可操作结果,支持项会显示复制、下载或可视化预览。
隐私
浏览器本地处理
主工具逻辑未发现外部 API 调用,输入通常留在当前标签页内处理。
保存 / 分享
可分享链接状态
关键设置会进入 URL,复制链接后别人能复现同一组参数。
性能预算
首屏 JS ≤ 9 KB
没有声明 WASM 依赖,适合快速打开和移动端使用。
适用场景
格式转换 · 程序员
分类和职业标签用于推荐相关工具、组织内链,并帮助用户快速判断是否适合当前任务。

怎么用

  1. 1. 输入

    把内容粘贴或拖入工具面板。

  2. 2. 处理

    点击按钮,在浏览器内本地处理,文件不上传。

  3. 3. 复制 / 下载

    一键复制结果或下载到本地。

JSON 转 Ruby 适合怎么用

适合在上传、交付、归档、客服排查前使用,也适合任何文件离开本机前的本地复核。

适合文件任务

  • 分享前检查文件类型、大小、元数据和明显不匹配信号。
  • 上传、归档、接收或审核前整理混合文件夹。
  • 敏感文件先留在浏览器里处理,不用交给账号型服务。

文件检查项

  • 不要只凭扩展名判断真实文件类型。
  • 文件发给客户、供应商或公开页面前,先看元数据。
  • 复制、转换或导出结果确认前,保留原文件。

下一步可以接着做

这些入口会把当前任务接到更完整的工具链里。

  1. 1 JSON 转 TypeScript Interface JSON 转 TypeScript interface, 粘 JSON 出干净 interface, 数组元素合并为 union, 可选字段自动识别, 根类型名可命名。 打开
  2. 2 TypeScript 转 Zod Schema TypeScript interface / type 转 Zod schema, 支持 union / 可选 / 嵌套 / 泛型 / enum / Record / Map / Set, 一键拷贝即用。 打开
  3. 3 JSON 转 Python Dataclass JSON 转 Python, 粘 JSON 出 @dataclass 或 Pydantic v2 模型, 带类型注解, Optional 推断, 嵌套子类, 字段转 snake_case 并保留别名。 打开

真实使用场景

  • 用真实 payload 生成 Rails fixture 或测试工厂

    你在日志里抓到一段 API 响应, 需要把它作为 Ruby Hash 放进 spec。 把 JSON 粘进来, 符号键保持简写形式, 把输出直接复制到 let 块或 FactoryBot trait 里。null 字段出来是 nil, 嵌套对象是嵌套 hash, fixture 和线上形状完全一致, 一个花括号都不用重打。

  • 把 config.json 转成类型化的 Ruby 配置对象

    你的服务读一份 JSON 配置, 但你想要属性读取器和固定形状, 而不是 h["server"]["port"] 这种字符串键链。切到 Struct 模式, 根名设为 Config, 你会得到 Config、ConfigServer、ConfigServerTls 这几个 Struct 以及实例化。这样 config.server.port 是真正的方法调用, 形状 有保障, 不再是一次打错就返回 nil 的 Hash 查表。

  • 把一段 JSON 搬进 irb 或 pry 会话

    你在调试, 想把一个样例对象作为活的 Ruby 值放进控制台。粘进 JSON, 源里有连字符键就选箭头键风格, 复制后粘到 pry 里。字面量当场求值, 于是你能用 .dig、.map、.select 去拨弄它, 而不是盯着原始 JSON 文本费眼。

  • 从导出文件构建 db:seed 的种子数据

    同事丢给你一份参考行的 JSON 导出。把对象数组粘进来, 留在 Hash 模式用符号键, 你会得到一个 Ruby hash 数组, 直接喂给 seeds.rb 里的 Model.create!(attrs)。某条记录有、另一条没有的键会显式渲染成 nil, 于是每次 create 调用拿到的属性集都一样。

常见踩坑

  • 以为简写符号对所有键都管用。简写标签形式只对合法 Ruby 标签的键有效。对于带连字符这类键, 工具会退回到带引号的符号形式或箭头形式, 让输出仍能解析; 不要手动改回裸标签。

  • 忘了 Struct 的位置顺序跟着 JSON 键顺序走。关掉 keyword_init 后, new 调用按位置对应参数, 因此调换 JSON 键的顺序会悄悄把值重新分配。源键顺序不稳定时保持 keyword_init 开着, 让每个值绑定到具名成员。

  • 在 Struct 模式里把 JSON null 和缺失的键当成两回事。两者都渲染成 nil, 因为折叠出的 Struct 必须为每个元素填满每个成员。如果这个区别对你的代码很重要, 就把数据保留为 Hash, 用 has_key 检查键是否存在, 而不是依赖 Struct。

隐私说明

转换是浏览器标签页里运行的纯 JavaScript: 内建 JSON 解析器读你的输入, 映射把它变成 Ruby 源码, 没有任何东西发往别处, 也不记录你粘的 JSON。 唯一要注意的是分享链接, 它会把你的输入和选项编码进 URL 查询字符串, 所以把链接粘到聊天里, 对方服务器的访问日志会留下这些内容。涉及敏感 payload 时, 用复制按钮粘贴 Ruby 文本, 而不是分享网址。

常见问题

类似工具组合

做你这行的人, 还会一起用这些。

Made by Toolora · 100% client-side · Updated 2026-05-29