常见问题
关于YamlBox的问题
有关网站如何运作的所有内容,然后是每个工具的详细问答。
一般的
谁构建并运行YamlBox?
YamlBox 是一个独立的、引导式开发人员工具网站。没有要创建的公司帐户,也没有销售团队——这些工具的存在是因为解析配置文件很糟糕是每天的烦恼,而且在本地执行比在其他地方执行要快。
如果一切都是免费的并且没有任何东西被追踪,你如何赚钱?
该网站的运行成本故意较低:从 Cloudflare 的边缘提供静态 HTML,没有每次转换的服务器成本,因为转换发生在您的浏览器中。未来的任何货币化都将是可见的且非侵入性的——永远不会出售数据,即使我们愿意,我们也无法做到这一点。
我可以在工作中使用这些工具处理专有数据吗?
这就是设计目标。您粘贴的任何内容都不会被传输、存储或记录,因此通常的“我可以将其粘贴到网站中吗?”问题有一个干净的答案。无论如何,请检查您自己的策略 - 有些组织需要本地工具,无论架构如何。
这些工具可以离线使用吗?
是的,第一次访问之后。页面是静态的并由您的浏览器缓存;转换代码在本地运行。飞行模式是对隐私声明的完美检验。
是否有API或CLI?
还没有。这些工具在设计上是浏览器优先的,API 会将你的数据移动到服务器——这正是该网站所避免的。对于编程管道,请使用每个工具页面上指定的底层开源库。
我发现了错误或缺少工具。我该如何举报?
通过电子邮件发送 hello@yamlbox.com 并输入破坏它的内容 - 一个最小的例子是黄金。也欢迎缺少工具的建议;该网站上的一些工具是根据请求启动的。
特定于工具的问题
按工具分组 - 跳转到完整页面以获取工作示例。
YAML 至 JSON → 打开工具
我的 YAML 是否已上传到服务器?
不会。转换器使用捆绑的 YAML 解析器完全在浏览器中运行。您的配置(包括其中的秘密)永远不会离开您的设备,并且该工具在页面加载后可以离线工作。
如何处理多文档YAML文件?
由 --- 分隔的文档被单独解析并组合成一个 JSON 数组,每个文档一个对象。如果您只需要第一个文档,请将多文档选项切换为“仅第一个文档”。
它支持 Kubernetes 和 docker-compose 文件吗?
是的。任何有效的 YAML 1.2 都可以工作:Kubernetes 清单、docker-compose.yml、GitHub Actions 和 GitLab CI 管道、Ansible playbook、OpenAPI 规范和 Helm 值文件。 Helm 模板使用的锚点和别名将解析为其最终值。
为什么我的YAML解析失败?
最常见的原因是用于缩进的制表符(YAML 只允许空格)、键后缺少冒号或同一映射中存在重复的键。错误面板显示有问题的行并指向该列,这通常会使问题变得明显。
YAML 评论会怎样?
JSON 中不存在评论,因此它们被删除。如果您需要保留它们,请将YAML保留为事实来源,并将JSON视为构建工件。
我可以转换非常大的文件吗?
数兆字节以下的文件可在几毫秒内完成转换。超大文件(几十兆字节)取决于您的设备内存;桌面浏览器可以轻松地处理它们,而手机则不能。
JSON 至 YAML → 打开工具
为什么我的“1.10”值在 YAML 后就变成了 1.1?
因为它是 JSON 源中的数字,而 YAML 会规范地呈现数字。如果该值在语义上是版本或标识符,请启用“强制引号”,使其在 YAML 中保留为字符串。
带点或破折号的 JSON 键安全吗?
是的。生成器引用任何可能混淆 YAML 解析器的键,并保留未加引号的普通键,因此输出保持可读但明确。
我可以将大 JSON 文件转换为 YAML 吗?
是 - 粘贴它、将文件拖放到输入窗格上或使用“文件”按钮。多兆字节的文档在桌面浏览器中没有问题;转换本身需要几毫秒。
输出是否保留按键顺序?
默认情况下,是 — 按键保持 JSON 顺序。当您想要一个确定性的、按字母顺序排列的文件在版本控制中产生干净的差异时,请启用“排序键”。
JSON 格式化程序 → 打开工具
“意外令牌”是什么意思?
这意味着解析器命中了一个无法出现在找到它的位置的字符 - 通常是右大括号之前的尾随逗号,单引号而不是双引号,或者不带引号的键。此格式化程序显示行和列,以便您可以在几秒钟内修复它。
它会验证 JSON 还是只是对其进行格式化?
两个都。格式化需要成功解析,因此如果出现输出,则输入有效。任何结构性问题都会显示为其位置错误,而不是默默地产生错误的输出。
它可以处理多大的文件?
几兆字节的文件会立即渲染。对于非常大的文档,实际限制是浏览器内存而不是格式化程序——典型的笔记本电脑可以毫无问题地处理数十兆字节。
我可以按字母顺序对 JSON 键进行排序吗?
是 - 启用“排序键”并且键会在每个级别递归排序。这使得文件具有确定性,因此版本控制差异仅显示真正的更改。
我的 JSON 被发送到任何地方了吗?
绝不。一切都在您的浏览器选项卡中进行解析。您甚至可以在加载页面后断开网络连接,格式化程序将继续工作。
JSON 差异 → 打开工具
这与文本差异有何不同?
文本差异比较行,因此重新格式化或重新排序键会产生噪音。该工具解析两个文档并按路径比较值,因此它仅报告真正的语义更改。
它是否检测到更改的数组项?
是的——数组是逐个元素进行比较的。存在于一个文档中但不存在于另一个文档中的元素将被报告为在索引路径(例如 $.users[2])处添加或删除。
它可以比较不同按键顺序的JSON吗?
是的。键顺序无关紧要,因为两个文档都会首先解析。 {"a":1,"b":2} 和 {"b":2,"a":1} 比较相同。
我也可以比较 YAML 文件吗?
首先使用另一个选项卡中的 YAML 到 JSON 转换器将它们转换,然后将两个 JSON 输出粘贴到此处。由于差异是结构性的,因此首先将 YAML 转换为 JSON 不会影响结果。
JSON 至 JSON 架构 → 打开工具
推断的 JSON 模式有多准确?
您提供的样本的类型和结构是准确的。推理无法知道的是业务规则——年龄必须为正,或者字段是枚举。将输出视为强有力的起点并手动添加约束。
如何处理具有不同项目形状的数组?
项目模式被合并:每个项目中存在的属性成为必需的,并且仅某些项目中存在的属性保持可选。类型差异产生联合,例如类型:[“字符串”,“数字”]。
我应该选择 Draft-07 还是 2020-12?
如果您的验证器是 AJV 6/7、较旧的编辑器或最近未更新的任何内容,请选择 Draft-07 — 它拥有最广泛的支持,并且是大多数 OpenAPI 3.0 工具所期望的。选择 2020-12 新项目和 AJV 8。
我可以在哪里使用生成的架构?
用于运行时检查的 AJV 和其他验证器、用于自动完成和验证 JSON 文件的 VS Code、用于记录 API 响应的 OpenAPI 规范,以及在响应偏离合同时导致构建失败的 CI 管道。
JSON 至 TypeScript → 打开工具
如何检测可选字段?
当输入是对象数组时,将检查每个项目的每个属性。某些物品中缺少的钥匙用“?”标记为可选,而随处可见的钥匙仍然是必需的。
可空字段如何成为类型?
null 被视为其自身的类型,因此有时为字符串有时为 null 的字段被类型化为 string | null — 诚实的类型,而不是编译器信任的谎言。
接口或类型别名——我应该选择哪个?
接口是更常见的约定,并且可以很好地合并在声明中;类型别名对于并集和交集来说读起来更好。从功能上讲,对于生成的数据形状,两者都有效 - 与您现有的代码库匹配。
它可以生成 Zod 或其他运行时模式吗?
不直接。从相同的有效负载生成 JSON 模式并派生验证器,或者手动编写 Zod 模式并将这些接口用于静态端。类型描述编译时的形状;验证器在运行时保护您。
这对于较大的 API 响应有效吗?
是的。粘贴或删除 JSON 文件 — 嵌套是递归推断的。非常大的有效负载受到浏览器内存而不是生成器本身的限制。
JSON 前往 → 打开工具
为什么有些字段会变成指针?
JSON null 不能存储在普通字符串或 int 中,因此可为 null 的字段将获得一个指针 (*string, *int)。这使得encoding/json能够区分“不存在”和“存在但为空”而不会失败,这正是指针类型的用途。
当字段具有混合类型时会发生什么?
如果一个值在一项中是字符串,而在另一项中是数字,则生成器将使用 any 而不是发明错误的具体类型。如果 API 确实那么松散,那么您可以决定使用自定义 UnmarshalJSON。
生成的标签是否包含 omitempty?
仅适用于示例中至少一项中缺少的字段。必填字段使用普通标签,因此往返不会丢失数据。
输出 gofmt 兼容吗?
是的 — 制表符、对齐方式和字段排序遵循 gofmt 约定。粘贴后运行 gofmt -l,它应该报告没有更改。
我可以为大型响应生成结构吗?
是的。嵌套对象成为单独的命名结构,而在解析的 JSON 中不可能进行循环,因此即使深度嵌套的有效负载也会生成一组扁平、可读的类型。
JSON 至 SQL → 打开工具
如何选择列类型?
每列都会扫描所有行。所有整数变为 INTEGER/INT,任何小数变为 NUMERIC/DOUBLE,布尔值变为 BOOLEAN,看起来 JSON 的字符串变为 TIMESTAMPTZ,嵌套对象或数组变为 JSONB/JSON/TEXT,具体取决于方言。
生成的SQL可以安全运行吗?
它是一个带有正确转义字符串文字的纯脚本,因此作为起点是安全的。在生产环境中运行之前检查一下:您可能需要生成器无法推断的主键、索引、NOT NULL 约束和外键。
嵌套对象怎么样?
它们成为保存嵌套值的单个 JSON/JSONB/TEXT 列。嵌套结构的关系建模是一项设计决策,因此生成器不会为您猜测连接。
我应该选择哪种方言?
PostgreSQL(如果您需要 JSONB 和 TIMESTAMPTZ)、MySQL(用于带有 DOUBLE 数字的 JSON 列)、SQLite(用于基于文件的数据库和测试)。脚本的结构是相同的;仅类型名称和布尔文字发生变化。
CSV 至 JSON → 打开工具
为什么“007”需要保留字符串?
前导零在邮政编码、产品代码和电话号码等标识符中很重要。因此默认情况下类型转换是关闭的;仅当每个看似数字的列确实是数字时才启用它。
如何处理包含逗号的引用字段?
正确的是,解析器遵循 RFC 4180,因此“Hopper,PhD”是一个字段,而不是两个字段。嵌入的双引号不会被转义,并且多行引号值会被保留。
我可以转换以分号分隔的欧洲 CSV 吗?
是的。分隔符是从第一行自动检测的,您可以在选项栏中显式覆盖选择。
JSON 线路输出有什么用?
JSON 行(每行一个 JSON 对象)是大多数数据工具、日志处理器和 LLM 管道所期望的格式。它还可以更好地传输:每行都可以独立处理。
有行数限制吗?
没有人为限制——非常大的文件仅受浏览器内存的限制。 50 MB CSV 在典型的笔记本电脑上可以轻松转换。
JSON 至 CSV → 打开工具
嵌套对象会发生什么情况?
它们用点表示法展平,因此 {"customer":{"name":"Ada"}} 成为列 customer.name。嵌套数组无法有意义地展平,并且在单元内序列化为JSON。
为什么有些行有更多列?
列列表是所有记录中所有键的并集。丢失的键只会产生一个空单元格,从而使每一行与同一标题对齐。
Excel可以直接打开文件吗?
是的。输出是采用 UTF-8 编码的标准 RFC 4180 CSV。在 Excel 中,如果在旧版本上双击 mangles 编码,请使用 Data → From Text/CSV。
我可以将 JSON 线路转换为 CSV 线路吗?
是的 — 每一行都被解析为一条记录,因此 JSONL 输入会生成与等效 JSON 数组相同的表。
XML 至 JSON → 打开工具
为什么属性以@开头?
XML允许一个属性和一个子元素同名,而JSON则不能用一个键来表达。 @ 前缀使属性与元素不同,因此转换过程中不会丢失任何内容。
重复元素如何处理?
当同一个标签在同级中出现多次时,这些值将成为 JSON 数组。单个事件仍然是标量或对象 - 这就是为什么消费者应该容忍两者,或者为什么你应该在代码中标准化。
它支持命名空间吗?
是的。命名空间元素保留其本地名称,并且前缀冲突按照源代码中的写入方式保留。如果您需要完整的命名空间保真度,请将原始 XML 保留在 JSON 旁边。
它可以转换 SOAP 响应吗?
是的 — 信封和正文像其他 XML 一样进行转换。对于 SOAP,请保持启用转换,以便数字字段以数字而不是字符串的形式到达。
Excel 至 JSON → 打开工具
我的电子表格是否上传到服务器?
不会。.xlsx 文件由 JavaScript 在浏览器选项卡中使用捆绑的阅读器进行解析。它永远不会离开您的设备,这使得该工具对于人力资源、财务和客户数据来说是安全的。
支持哪些 Excel 格式?
.xlsx(Excel 2007 及更高版本)和 .csv。不支持旧的二进制 .xls 格式 - 首先在 Excel 中打开它并另存为 .xlsx 或 .csv。
公式是如何处理的?
使用 Excel 存储的缓存值。如果文件是用公式保存的,但没有缓存结果(很少见,但有可能),那么这些单元格可能为空。在 Excel 中重新保存会刷新缓存。
约会会发生什么?
Excel 将日期存储为序列号;读取器将它们转换为 JavaScript 日期并发出 ISO 字符串,因此“2025-03-14”以文本形式到达,而不是 45730。
SRT 至 VTT → 打开工具
为什么 HTML5 视频需要 WebVTT 而不是 SRT?
<track> 元素以及每个主要浏览器播放器都实现了 WebVTT 规范。 SRT是广播工具的遗留格式——接受它的播放器通常会在内部进行不完美的转换。
我的字幕上传了吗?
否。该转换是客户端文本转换。机密或未发布的内容永远不会离开浏览器,这通常是工作室的合同要求。
SRT 提示编号会发生什么情况?
WebVTT 不需要它们,并且它们是可选的。默认情况下,提示按顺序重新编号;您可以完全关闭编号。
它保留粗体和斜体标签吗?
是 — SRT <b>/<i>/<u> 标签是有效的 WebVTT 并且会被保留。 SRT 特定的 {an8} 样式定位覆盖被剥离,因为 WebVTT 以不同的方式表达定位。
它可以修复格式错误的字幕文件吗?
它可以容忍现实世界中常见的怪癖: 、 或 。以毫秒为单位,一位数小时,在具有有效时间码的提示之间缺少空白行。真正损坏的文件会出现明显的错误,而不是无声的损坏。
JWT 解码器 → 打开工具
将 JWT 粘贴到网站中是否安全?
有了这个工具,令牌本身就可以了——在浏览器中进行纯 JavaScript 解码,不会将任何内容发送到任何地方。但无论如何,请将令牌视为秘密:JWT 是不记名凭证,对持有它的人有效,直至其过期。对于生产令牌,更喜欢在您自己的调试器中本地解码。
这可以验证签名吗?
不,没有您的秘密或公钥的任何解码器也不会。仅解码 base64url 解码段。验证需要签名密钥,并且属于您的后端或 jose 或 jsonwebtoken 等库。
尽管解码有效,为什么我的令牌仍被拒绝?
通常的原因是:exp 声明已通过,令牌是为不同的受众(aud)或发行者(iss)发行的,服务器时钟差异足以将 nbf 拉到未来,或者签名密钥已轮换。索赔小组立即回答前三个问题。
iat、exp 和 nbf 是什么意思?
iat 为 Issue-at,exp 为过期时间,nbf 为 not-before。这三个都是以秒为单位的 Unix 时间戳。当 nbf ≤ now < exp (当这些声明存在时),令牌有效。
我可以编辑令牌来测试角色检查吗?
您可以编辑有效负载,但签名将不再匹配,因此任何验证签名的服务器都会正确地拒绝它。为了进行测试,请使用您环境中的密钥重新签名;这是诚实地测试身份验证路径的唯一方法。
时间戳转换器 → 打开工具
如何区分秒和毫秒?
按幅度:纪元秒今天为 10 位数字 (1735689600),毫秒为 13 位 (1735689600000)。转换器应用该规则,并且还遵循显式小数 — 1735689600.5 被视为带有小数部分的秒。
UTC 和本地输出有什么区别?
两者都描述了同一时刻。 UTC 与时区无关——存储和日志始终安全。本地显示设备时钟显示的内容,使用浏览器的时区,这是用户感知的。
为什么我的时间戳看起来相差几个小时?
几乎总是时区错误而不是时间戳错误:使用本地时间解析器创建的值,但读取为 UTC(反之亦然)。在这里比较 UTC 和本地行 - 如果它们与您的 UTC 偏移量不同,那就是原因。
我可以转换 1970 年之前的日期吗?
是的。负 Unix 时间戳有效,表示纪元之前的日期;转换器处理它们并解析历史日期字符串。
2038 年呢?
2038 年 1 月 19 日 03:14:07 UTC 的 32 位有符号整数溢出会影响将时间戳存储为 int32 的旧系统。在 JavaScript 中,此工具不受影响 - 并且当前的 64 位或毫秒存储实践也不受此影响。
URL 编码器/解码器 → 打开工具
encodeURI 与encodeURIComponent — 我需要哪个?
对要放置在查询参数 (?q=…) 中的值使用encodeURIComponent:它会转义 &、=、?、/ 和 #,因此该值不会破坏 URL 的结构。使用encodeURI 获得您想要保持完整的完整URL,其中留下:、/ 和?独自的。
为什么空格会变成%20或+?
在路径或片段中,空格必须为 %20。在 application/x-www-form-urlencoded 数据(经典 HTML 表单的主体)中,空格是 +。此处的查询解析器将 + 视为空格,这是表单编码字符串的正确行为。
为什么我的 URL 是双重编码的?
因为它被编码了两次——通常是一个框架对已经编码的值进行编码。在这里解码一次;如果结果仍然包含 % 序列,请再次解码,然后修复管道,使其只编码一次。
它可以处理非拉丁字符吗?
是的。文本被编码为 UTF-8 字节,然后进行百分比转义,因此日语、阿拉伯语、西里尔语和表情符号都会生成正确的、可互操作的 URL。
Base64 编码器/解码器 → 打开工具
Base64 是否加密?
不。Base64 是一种编码,而不是加密——它没有密钥,并且提供零机密性。将 Base64 编码的数据视为看起来只是乱码的明文。当需要保密时使用加密(TLS、AES、年龄)。
为什么 Base64 有时 URL 与 - 和 _ 是安全的?
标准Base64使用+和/,这在URL和标识符内部是有问题的。 URL安全变体 (RFC 4648 §5) 替换 - 和 _ 并且通常省略 = 填充,因此该值在放置在查询字符串或文件名中时仍然存在。
如何将 Base64 解码为文件或图像?
该工具解码为文本,这适用于文本负载。如果解码的字节是图像或存档,则该解码器会清楚地报告,而不是打印垃圾 - 使用字节到文件工具来处理这些内容。
为什么我的 Base64 字符串以 = 或 == 结尾?
填充。 Base64 将 3 个字节编码为 4 个字符;当输入长度不是三的倍数时,编码用 = 填充以保持块完整。衬垫通常是可选的,并在安全使用时将其剥离。
cURL 来获取 → 打开工具
生成的获取代码是否已准备好用于生产?
请求翻译是准确的——方法、URL、标头和正文与curl 发送的内容相匹配。发货前应添加的内容:错误处理(检查response.ok)、AbortController 超时以及幂等调用的重试逻辑。
我的 -k / --insecure 标志去哪里了?
它是在注释中注明的,而不是翻译的,因为节点获取默认情况下会验证 TLS,并且在代码中禁用它是一项安全决策。改为修复证书;如果您确实需要它,请仅在一次性环境中设置 NODE_TLS_REJECT_UNAUTHORIZED=0 。
如何处理基本身份验证?
-u user:pass 成为一个 Authorization: Basic 标头,其凭据经过 Base64 编码,这正是curl 发送的内容。在 API 支持的情况下,优先使用令牌而不是基本身份验证。
它可以处理 --compressed 和重定向吗?
压缩在 fetch 中是透明的,因此 --compressed 不需要代码。 fetch 中默认跟随重定向,将curl 与-L 匹配;如果您需要手动重定向处理,请设置重定向:“manual”。
为什么我的curl命令无法解析?
大多数失败来自复杂 shell 字符串中未转义的引号或解析器无法识别的标志。该错误命名了它所阻塞的令牌——通常修复命令比猜测更快。
Markdown 表格生成器 → 打开工具
为什么要对齐表格而不是使用最小值 Markdown?
因为 README 文件在编辑器、差异和终端中以原始形式读取的频率至少与渲染形式的读取频率相同。带填充的列使源代码可读,Markdown 渲染器会忽略多余的空格。
我可以将 Markdown 表转换回 CSV 吗?
是的——粘贴表格;识别以竖线分隔的输入并跳过现有的分隔符行,因此您无需格式化即可恢复数据。
它会逃离细胞内的管道吗?
是的,带有反斜杠 (\|),这是标准的 GitHub 风格的 Markdown 转义。如果没有它,值中的管道会默默地将行拆分为额外的列。
输出可以在哪些平台上运行?
GitHub、GitLab、Bitbucket、Obsidian、Notion(通过粘贴)、Jira、大多数静态站点生成器以及任何支持表格的 CommonMark 渲染器。 GitHub 风味Markdown 是这里事实上的标准。