INI 转 JSON — 在浏览器中将 INI 配置文件转为 JSON
将 INI 配置文件转换为 JSON。自动识别 section、解析值类型,全部在浏览器中完成。无上传、无限制。
INI to JSON
Convert INI configuration files to JSON format. Auto-detects sections, numbers, and booleans. Works entirely in your browser.
INI 文件是仍在广泛使用的最古老配置格式。它比 JSON 早出现几十年 —— 导出为文本的 Windows 注册表、PHP 的配置、Python 的 configparser 库、Git 的配置文件、MySQL 的 option file,以及几十种老旧应用的配置格式,都使用某种 INI 变体。这种格式有意做得极简:一个 [section] 头引入一组命名分组,后面接键值对(key = value),注释用 ; 或 #。它没有嵌套 section 的标准、没有类型系统、没有列表语法 —— 每个值都是文本,结构由约定暗示。
把 INI 转成 JSON 给了它第二次生命。这种格式本身适合人手编辑 —— 50 行的 INI 比等价的 JSON 更容易读和改 —— 但一旦数据要喂给 Web 应用、配置管理系统或数据管道,JSON 就是通用语言。转换大体上是机械的:section 头变成 JSON 键,键值对变成 JSON 属性,需要判断的地方只有类型推断(数字、布尔、null)。本工具的推断偏保守 —— 只要有一列里出现一个非数字值,整列都变成字符串 —— 同时开放一个「全部加引号」的开关,应对推断会出错的情况(看起来像数字但应该作为文本保留的邮编、电话号码、ID)。
最终的交接:如果目的地是 JavaScript 应用或 Node.js 配置加载器,输出的 JSON 与任何标准解析器粘贴即用。如果目的地是带类型的语言(TypeScript、Go、Rust),把 JSON 喂给类型生成工具来产出匹配的类型。如果目的地是另一种配置格式,JSON 是有用的中间产物 —— TOML 或 YAML 的转换器接受 JSON 派生的对象并产出正确类型的输出。INI 格式本身很少是最终目的地 —— 保留 JSON,若项目需要再重新导出为 TOML 或 YAML。
使用方法
粘贴 INI 内容
把 INI 文本贴入输入区,或通过文件选择器加载 .ini 文件。section 从 `[section]` 头识别,键值对从 section 下方的每一行解析。
选择输出形态
在嵌套对象(section 作为顶层键)、扁平前缀键(`section.key`)、section 数组(每个 section 是数组中的一项)之间选择。默认嵌套,适合 section 分明的 INI 文件。
复制或下载 JSON
把 JSON 复制到剪贴板,或下载为 .json 文件。类型推断自动把数字、布尔、null 转换过来;开启「全部字符串」可关闭推断,把每个值都保留为 JSON 字符串。
常见问题
section 在输出里如何表示?
默认每个 `[section]` 头成为 JSON 对象中的一个顶层键,下面的键值对成为它的值。带有 `[database]` 和 `[server]` 的 INI 文件会变成 `{ database: {...}, server: {...} }`。扁平输出则给每个键加上 section 前缀(`database.host`)。
section 之外的键会怎样?
首个 `[section]` 头之前的键被归到一个 `_` 或 `default` 键下。这是为了保留数据 —— 实际中的 INI 文件有时在顶部有没有头的键,默默丢弃会损坏配置。
重复的键如何处理?
默认采用「最后一个值生效」,与大多数 INI 解析器的行为一致。开启「值数组」可以把重复键的每次出现都作为一项保留为 JSON 数组 —— 适合 INI 源用重复键表示列表的场景(`item = a`、`item = b`、`item = c`)。
支持注释和空行吗?
支持 —— 以 `;` 或 `#` 开头的行被当作注释并剥离。空行被忽略。使用行续接(一行末尾的反斜杠)的多行值会在类型推断前合并成单个值。
支持嵌套 section 吗?
不支持 —— INI 没有原生嵌套 section 语法。本工具把 `[a.b]` 当作字面名为 `a.b` 的 section,而不是嵌套的 `a` 含 `b`。需要层级结构的配置,TOML 或 YAML 才是正确的源格式。
限制说明
- 没有原生嵌套INI 没有嵌套 section 语法。名为 `[database.connection]` 的 section 是平铺名字,不是层级。需要嵌套的配置,从本身就支持层级的 TOML 或 YAML 起步。
- 类型推断偏保守数字、布尔、null 值会被自动推断。全为数字的一列变成 JSON 数字;只要有一个非数字值,整列都变成字符串。开启「全部字符串」可以关闭推断。
- 不自动识别 INI 方言本工具处理的是标准 INI 格式。带自定义特性的厂商方言(PHP 的数组语法、Windows 注册表风格的转义、特定标记的多行值)可能解析不正确。如果源文件非标准,请在输出里检查零散值。
平台说明
- macOS
- TextEdit 和 VS Code 都能把 .ini 文件保存为纯文本。本浏览器工具适合那些从聊天、邮件、文档页里贴过来的 INI 内容 —— 在 Python `configparser` 会话里重新敲一遍不现实。
- Windows
- 记事本默认用 Windows-1252 编码保存 INI 文件。如果文件含非 ASCII 字符,先另存为 UTF-8 以避免转换出的 JSON 里出现乱码。
- Linux
- 命令行场景下,`python3 -c 'from configparser import ConfigParser; ...'` 或 `crudini --format json file.ini` 都能完成转换。本浏览器工具适合从聊天或邮件里贴过来的 INI 内容。
- Web
- 完全在客户端运行。页面加载后离线可用。在命令行工具或 Python 装不了的环境里很有用。