INI 转换

把 INI 转成 JSON 或 YAML,也可以把只有一层的 JSON 写回 INI。

小节文件和一棵树

INI 是一行行 key = value,可以有 [section]。这个页面把它读成 JSON 或 YAML,或把只有一层的 JSON 写回 INI。嵌套对象和数组在这里没有 INI 写法。整份 JSON 转 YAML 用 JSON 转 YAML。

怎么用

  1. 把 INI 或 JSON 贴进输入框。
  2. 方向可选 INI 转 JSON、INI 转 YAML,或 JSON 转 INI。
  3. 把裸写的数字和布尔转成对应类型默认开着。裸写的 3306 会变成数字,true 变成布尔,null 变成 null。加了引号的值仍是字符串,所以 "3306" 还是文本。关掉这个选项后,没加引号的值也都当文本。
  4. 转换写出结果。显示示例会填入 title = Notes、空行、[db]、host = localhost 和 port = 3306,并把方向设为 INI 转 JSON。全部清除清空两个框。复制结果复制输出。

转换会留下什么

空行,以及以 ; 或 # 开头的行会跳过。小节名变成对象。第一个小节之前的键留在最外层。同一小节里后出现的同名键覆盖前面的。JSON 转 INI 只接受值为字符串、数字、布尔、null,或由这些标量组成的对象。数组,或小节里面再套对象,会被拒绝。写回 INI 时不会给值加引号。INI 转 YAML 先得到和 INI 转 JSON 相同的对象,再写成 YAML。没有续行,也没有 [section.sub] 这种再嵌一层的对象。

用在哪

  • 把一份配置读进脚本。
  • 把设置文件改成 YAML。
  • 把一层的设置对象写回 INI。

常见问题

port 变成了数字,我需要文本 3306。

在 INI 里给它加引号,或关掉「把裸写的数字和布尔转成对应类型」。

数组转 INI 失败了。

这里只写一层小节。数组没有对应的 INI 形状。