← ToolBox
/ INI 解析器
🌙
📝 INI 解析器
INI 配置解析与编辑:支持 [section]、key=value、注释、行内空格。可双向转换 INI ↔ JSON。
INI → JSON
JSON → INI
美化
压缩
复制
清空
示例
输出
等待转换...
已复制
const SAMPLE = '; App config\n[server]\nhost = localhost\nport = 8080\nworkers = 4\n\n[database]\nhost = db.example.com\nport = 5432\nname = myapp\nssl = true'; function parseIni(text){ const result = {}; let section = null; for(const line of text.split('\n')){ const t = line.trim(); if(!t || t.startsWith(';') || t.startsWith('#')) continue; if(t.startsWith('[') && t.endsWith(']')){ section = t.slice(1, -1); result[section] = {}; } else { const eq = t.indexOf('='); if(eq < 0) continue; const k = t.slice(0, eq).trim(); const v = t.slice(eq + 1).trim(); if(section) result[section][k] = v; else result[k] = v; } } return result; } function toIni(obj){ const lines = []; for(const k in obj){ if(obj[k] && typeof obj[k] === 'object' && !Array.isArray(obj[k])){ lines.push('[' + k + ']'); for(const sk in obj[k]) lines.push(sk + ' = ' + obj[k][sk]); lines.push(''); } else { lines.push(k + ' = ' + obj[k]); } } return lines.join('\n').trim(); } function iniToJson(){ setErr(''); try{ setOut(JSON.stringify(parseIni(document.getElementById('input').value), null, 2)); setErr('✅ 解析成功'); }catch(e){ setErr('❌ ' + e.message); } } function jsonToIni(){ setErr(''); try{ const data = JSON.parse(document.getElementById('input').value); setOut(toIni(data)); setErr('✅ 转换成功'); }catch(e){ setErr('❌ ' + e.message); } } function doBeautify(){ setErr(''); try{ const text = document.getElementById('input').value; if(text.trim().startsWith('{')) setOut(toIni(JSON.parse(text))); else setOut(toIni(parseIni(text))); setErr('✅ 美化成功'); }catch(e){ setErr('❌ ' + e.message); } } function doMinify(){ doBeautify(); } function loadSample(){document.getElementById('input').value = SAMPLE; iniToJson();} function setOut(s){document.getElementById('output').textContent = s;} function setErr(s){const e = document.getElementById('err'); e.textContent = s || ''; e.className = 'err' + (s && s.startsWith('✅') ? ' ok' : '');} function clearAll(){document.getElementById('input').value = ''; setOut('等待转换...'); setErr('');} function getIndent(){const v=document.getElementById('indent').value;return v==='tab'?'\t':' '.repeat(parseInt(v));} function setOut(s){document.getElementById('output').textContent=s;} function setErr(s){const e=document.getElementById('err');e.textContent=s||'';e.className='err'+(s?'':' ok');} function clearAll(){document.getElementById('input').value='';setOut('等待输入...');setErr('');} function loadSample(){document.getElementById('input').value=SAMPLE;doBeautify();}