SHMILY 工具箱tool.ly1314.com

JSON 与 YAML / XML 互转

JSON、YAML、XML 三向互转,顺带生成 Go / TypeScript / Java 结构体。

三向互转生成结构体本地解析无需登录免费

使用说明

  • 左上角选输入格式,右上角选输出格式,中间点「转换」。JSON / YAML / XML 三向互通,也能直接输出 Go、TypeScript、Java 的模型代码。
  • YAML 解析使用 js-yaml,支持锚点、多行字符串与常见类型推断;XML 解析走浏览器原生 DOMParser,属性会转成 @属性名,节点文本转成 #text,同名子节点自动合成数组。
  • XML 默认不把 013800138000 这种文本转成数字(否则前导 0 会丢),需要转成数值时勾上「数值识别」。
  • 生成结构体时,数组元素会做类型合并:整数与小数合并成浮点,遇到 null 只降低确定度(Go 里仍是原类型,TS 里标成可选 ?),类型真的打架时才退化成 interface{} / any。
  • 同结构的嵌套对象会复用同一个类型名,不会生成 Item、Item2、Item3 一串。
YAML 里的日期为什么变成了字符串?

js-yaml 对形如 2026-01-01 的值默认按 YAML 1.1 的日期类型处理,转成 JSON 时会变成 ISO 字符串。需要保留原始写法时给值加引号即可。

XML 属性为什么要加 @ 前缀?

因为 JSON 里没有「属性」这个概念,用 @name 是社区通用的映射约定(xml2js、fast-xml-parser 默认也是这个规则)。转回 XML 时会自动还原成属性。