DevKit源码

配置格式迁移

把 JSON 配置转成 YAML,并核对关键字段、数组与布尔值没有被静默改写——全部在浏览器本地完成。

本地处理 · 输入不上传

这个问题与输入产出

输入

JSON 配置文本:对象 / 数组,支持布尔、数字样式的字符串、超出 JS 安全整数范围的大整数(转换上限 1000 层嵌套)

产出

2 空格缩进的 YAML 文本;流程页可整体复制,或下载为 config.yaml

步骤

3 步:JSON 格式化 → JSON 转 YAML → 下载标记,全部在浏览器本地运行

反方向

YAML → JSON 不在本流程内:用「JSON / YAML 转换」单项工具(也适合回读核对)

示例数据

示例数据 · 无敏感信息

左侧是一段虚构的服务配置(示例数据),右侧是它经过「配置格式互转」流程后的真实运行输出, 不是示意文本。示例刻意包含了最容易在迁移中被改写的几类值:布尔、数组、数字样式的字符串、超出安全范围的大整数。

输入 · JSON示例数据
{
  "app": {
    "name": "inventory-api",
    "version": "2.4.1",
    "buildNumber": "20260926",
    "replicas": 3,
    "timeoutMs": 8000,
    "debug": false
  },
  "database": {
    "host": "127.0.0.1",
    "port": 5432,
    "name": "inventory",
    "readonly": true,
    "pool": { "minIdle": 2, "maxOpen": 16 }
  },
  "featureFlags": {
    "fastSearch": true,
    "legacyExport": false,
    "grayPercent": 25
  },
  "upstream": {
    "endpoint": "https://example.internal/api",
    "retry": { "attempts": 3, "backoffMs": [100, 400, 1600] },
    "traceId": "123456789012345678"
  },
  "snowflakeSample": 1234567890123456789,
  "notes": "示例配置:核对字段、数组与布尔值转换后是否保持原样"
}
输出 · YAML(流程第 3 步的真实结果)真实运行输出
app:
  name: inventory-api
  version: 2.4.1
  buildNumber: '20260926'
  replicas: 3
  timeoutMs: 8000
  debug: false
database:
  host: 127.0.0.1
  port: 5432
  name: inventory
  readonly: true
  pool:
    minIdle: 2
    maxOpen: 16
featureFlags:
  fastSearch: true
  legacyExport: false
  grayPercent: 25
upstream:
  endpoint: https://example.internal/api
  retry:
    attempts: 3
    backoffMs:
      - 100
      - 400
      - 1600
  traceId: '123456789012345678'
snowflakeSample: 1234567890123456789
notes: 示例配置:核对字段、数组与布尔值转换后是否保持原样
第 1 步 · JSON 格式化格式化完成,39 行、780 B
第 2 步 · JSON → YAMLJSON 已转为 YAML;1 个数值超出 JS 安全范围(如 $.snowflakeSample),已按原文输出以保留精度;部分工具按数值解析时仍可能丢失精度(超出安全整数范围的数值尤其如此)
第 3 步 · 下载标记将导出为 config.yaml,585 B

想自己跑一遍:复制示例 JSON,进入流程页粘贴到「流程输入」,点「运行全部」。想核对自己的数据是否被改写:对照下方核对清单, 或把输出 YAML 用「JSON / YAML 转换」转回 JSON 后做差异比较。

处理步骤与每一步为什么需要

第 1 步 · JSON 格式化

先把文本真正解析成结构,而不是直接做字符串替换。语法错误在这一步暴露,报错带行列定位;重复键在这里告警(后出现的键会覆盖前者);后面两步拿到的必然是一份解析成功的结构。

第 2 步 · JSON → YAML

类型保真规则在这一步生效:像数字的字符串自动加引号(buildNumber: '20260926'),布尔保持 true / false,超出安全范围的大整数按原文文本输出并附告警——这些正是「不被静默改写」的核对点。

第 3 步 · 下载标记

只把导出文件名定为 config.yaml,不改变内容。真正的文件落盘只发生在你点「下载」的那一刻,由浏览器完成;点之前数据一直只在页面内存里。

转换后核对清单(怎么算迁移完成)

布尔值

debug: false、readonly: true 保持无引号的 true / false,没有变成字符串

数组

backoffMs 的 100 / 400 / 1600 元素与顺序原样保留,仍是列表

字符串类型

buildNumber: '20260926'、traceId: '123456789012345678' 带引号——不带引号的数字样式值会被 YAML 读取方当成数字

大整数

snowflakeSample: 1234567890123456789 按原文输出(第 2 步 note 同时告警:下游按数值解析仍可能丢精度)

能下载 config.yaml,并且上面四类值都与原文件一致,才算完成——下载下来的就是右侧这份 YAML 的同款结果。

用你的数据完成迁移

进入「配置格式互转」流程页,把 JSON 粘贴到「流程输入」后点「运行全部」。你的数据不经过本页,也不进入 URL 或分享链接。

常见失败原因

JSON 语法错误(缺括号、多余逗号、单引号)

第 1 步失败并中断。示例:删掉一个右花括号后运行,提示「JSON 解析失败:第 5 行第 3 列附近:对象属性之间缺少逗号或右花括号」。即使手动关闭「失败时中断流程」让剩余步骤跑完,「流程输出」也会停用复制 / 下载,不会把未转换的原始输入当成 config.yaml 存盘。

粘贴的是 YAML,却按 JSON → YAML 方向运行

第 1 步 JSON 解析失败,提示「JSON 解析失败:出现意外字符,不是合法的 JSON」。需要的是先走 YAML → JSON(单项工具),再进入本流程。

输入为空

点「运行全部」会提示「请先填写或接收流程输入」,不会产生任何步骤结果,也不会显示成成功。

重复键

不是失败:流程继续,第 1 步 note 告警「检测到重复键:…(后出现的键覆盖前者)」。迁移配置前应先改掉重复键,否则结果以最后一次取值为准。

超出安全整数范围的大整数

不是失败:YAML 文本按原文输出以保留精度,但第 2 步 note 明确告警——下游若按数值解析(而非字符串)仍可能丢失精度,需要消费方约定读取方式。

嵌套超过转换上限

本流程最多转换 1000 层嵌套。超过时第 1 步就会明确失败并提示减少嵌套,不会等到 YAML 转换时才出现因运行环境而异的栈溢出。

数据处理说明

  • 输入与每一步的中间结果只在本次页面内存中顺序传递,离开页面即清除,不发送到任何服务器。
  • 本页与流程页都不把你的数据写进 URL、分享链接或站点统计;本页只有固定示例,不接收输入。
  • localStorage 只保存流程定义与运行记录摘要(状态、耗时),不保存输入、输出或中间结果。
  • 唯一的文件落盘发生在你点「下载」时,由浏览器生成本地文件。

相关单项工具