接手老系统,配置是 .ini、接口还返 XML;压缩后的二进制要贴进代码字符串;拼模板时反斜杠数不清——这四件事看着不相关,其实都是「同一份信息换个壳」。四个工具对应四种壳,规则记住了就不会转丢东西。
INI 用 [section] 分段、key=value 赋值,分号和井号都是注释。转 JSON 时工具会自动识别 section、把布尔值和数字还原成对应类型(而不是一律当字符串),注释按规则处理。
常见坑:同名 key 在不同 section 里是允许的,转成 JSON 后靠层级区分,别在合并时覆盖;值里含等号或井号 的老配置需要人工复核是否被误切。转完建议把 JSON 与原文各扫一眼,确认类型没跑偏。
XML 比 JSON 多两样东西:属性、以及「既含属性又含文本」的混合节点。转换约定通常是:
| XML 内容 | JSON 表示 |
|---|---|
属性 id="7" | "@id": "7"(@ 前缀) |
| 节点文本 | "#text": "内容" |
| 重复同名节点 | 自动合并成数组 |
这套约定保证了双向互转不丢信息。注意:XML 属性值一律是字符串,转 JSON 后数字仍是字符串,需要数值比较时要显式转换;反向从 JSON 转回 XML 时,@ 与 #text 会被识别为属性和文本而不是普通字段。
浏览器原生 CompressionStream 支持 gzip、deflate、deflate-raw 三种格式。工具压缩文本或文件后,把二进制结果用 Base64 呈现——这样就可以直接贴进代码、配置文件或接口调试窗口,不会因不可见字节被编辑器吃掉。
三个格式的差别只在外层封装:gzip 带文件头与校验、deflate 是 zlib 封装、deflate-raw 是裸数据流。解压时要选和压缩时一致的格式,选错通常表现为「数据损坏」而不是明确报错。验证压缩链路正确性时,压缩再解压、比对原文一致即可。
<、&,用于模板里输出字面量,防标签被解析;\u4f60 形式,处理国际化资源(详见 Unicode 编码转换);最容易犯的错是把四种语境的转义混着用:HTML 里写 \u 不会还原,JSON 里写 也不会还原。转义工具支持四种模式双向反转义并实时预览,拼完先预览一遍再复制,省得数反斜杠。
问:INI 转 JSON 后 true 变成了字符串 "true" 吗?
工具会自动识别布尔值和数字类型,但形如 yes/on 的老式写法建议转成标准 true/false 后再转,避免下游解析分歧。
问:XML 里同名节点只有一个时,JSON 是对象还是数组?
取决于工具约定,通常按「重复才合并成数组」处理。下游代码若固定期望数组,生成后要人工包一层。
问:这些转换会上传我的配置文件吗?
不会,四个工具都在浏览器本地解析与计算,配置和文本不出本机。
格式转换的坑几乎都在「信息丢失」和「语境混用」这两处。规则清楚了,四个工具就能放心当日常管道用。