INI / .properties ↔ JSON 相互変換
整形処理はすべてブラウザ内で完結します。データは送信されません
INI / `.properties` / `.conf` といった設定ファイルを JSON に、あるいはその逆に変換します。2つの方言は1つのツールにまとめ、オプションで切り替えます —— 元々同じもの(`キー = 値` とコメント)の変種であり、`.conf` という拡張子からはどちらか判断できないためです。 違いは「統合」せず、それぞれの正典に従います —— これがこのツールの要点です: · 引用符:INI では `key = "値"` の引用符は囲み記号なので外します。`.properties` では引用符も普通の文字で、外しません(Java の `Properties` がそう読むため)。 · エスケープと継続行:`\uXXXX`、`\n`、行末のバックスラッシュによる継続は `.properties` でのみ有効です。INI モードでは値をそのまま保持します —— そうしないと Windows パス(`C:\dir\`)を含む INI が継続行の規則に1行丸ごと食われます。 · 値の末尾の空白:Java は値の前の空白だけを除き、末尾は保持します。INI は両端を除きます。 どちらの形式にも存在しないものについても明示しています:キーの重複は後勝ち(Java とほとんどの INI リーダーと同じ)、配列はキーの繰り返しで表現します。
機能
- 双方向:INI → JSON、JSON → INI。自動判定も手動指定も可能
- 2つの方言を1つのオプションで切り替え:INI([セクション]、引用符を外す)と .properties(! コメント、空白区切り、エスケープ、継続行)
- `[db]` の見出しは入れ子のオブジェクトに。同名のセクションが2回出たら統合し、丸ごと置き換えません
- 2段より深い入れ子はドット付きのセクション名(`[a.b]`)。同じパスの見出しは1回だけ出力します
- キーの重複は後勝ち。上書きされたキーは結果に報告します —— 実際に失われたデータだからです
- `.properties` の `\uXXXX`・`\n`・`\: ` エスケープと継続行を Java のアルゴリズムどおりに復元
- 数値は往復無損失のときだけ変換:`port = 5432` は数値、`zip = 007` は文字列のまま
- `true` / `false` は真偽値に。`True` / `yes` は文字列のまま(実装ごとに扱いが異なるため推測しません)
- 出力時、改行・前後の空白・`#` `;` `!` で始まる値を含む場合は引用符を付け、コメントとして読まれないようにします
- JSON → INI で null があるとパスを指してエラーにします(どちらの形式にも null はありません)
- 解析エラーは具体的な位置を指します。「書式が違います」の一言では終わりません
使い方
- INI / .properties または JSON を貼り付けます(JSON として解析できれば JSON、それ以外は INI として扱います)
- 「方言」が合っているか確認します(`.properties` なら2つ目を選ばないとエスケープと継続行が効きません)
- 結果はその場で更新されます。方向は手動でも指定できます
- コピーして結果を取り出します
よくある質問
- INI と .properties のどちらを選べばよいですか?
- ファイルの出所で判断します。`.properties` は Java 界の形式(`java.util.Properties`)で、`\uXXXX` などのエスケープ、行末バックスラッシュによる継続、`!` で始まるコメントに対応し、値の両端の引用符は囲み記号ではなく内容そのものです。INI はより広い分類(Windows の `.ini`、各種 `.conf`)で、`[セクション]` 構造を持ち、引用符は値を囲む記号です。`.conf` の場合は中身を見てください —— `[セクション]` があれば INI、`\u` エスケープや継続行のバックスラッシュがあれば `.properties` です。選び間違えると値のバックスラッシュや引用符が増減しますが、解析自体はエラーになりません。
- 同じキーを2回書いたのに1行しか残らないのはなぜですか?
- キーの重複は後勝ちが両形式の標準動作だからです —— Java の `Properties` も、ほとんどすべての INI リーダーもそう読みます。ここでもその規約に従いますが、上書きされたキーは結果に報告します。実際に失われたデータだからです。「1つのキーに複数の値」を意図していた場合、INI 界で通例の書き方はキーを繰り返すことで、リーダーが個別に扱います —— エクスポート側はその規約を使っています。ただしインポート側は標準どおり最後の1つだけを残すため、その経路は不可逆です。
- 配列と JSON の null はどうなりますか?
- どちらの形式にも配列はなく、null もありません。配列はキーの繰り返し(`tags = a` / `tags = b`)として出力します —— INI 界で最も一般的な規約です。null は既定でエラーになり、どのキーかを示します。既定の動作ではそのキーが丸ごと消えてしまい、フィールドが1つ欠けた設定を何の通知もなく受け取ることになるためです。「空の値にする」「キーごと省く」も選べます。⚠️ 配列内の null は省略できません:要素を1つ取り除くと後続すべての添字が変わり、エラーより悪い結果になるためです。
- `port = 5432` は数値なのに `zip = 007` が文字列なのはなぜですか?
- 判定基準は「往復無損失」です。テキストを数値にして文字列に戻したとき元と完全に一致する場合だけ数値にします。`5432` は往復しても `5432` なので数値です。`007` は 7 を経て `7` になり元と違うので `"007"` のままです —— 識別子の前導ゼロはその一部であり、7 にしてしまうと元に戻せません。`true` / `false` は真偽値になります(設定ファイルで `debug = true` を文字列 `"true"` として読むと、下流の `if (cfg.debug)` が常に真になってしまいます)。一方 `True` や `yes` は文字列のままです —— 実装によって意味が異なるため推測しません。「すべて文字列」を選べば推論を止められます。
関連ツール
TOML 変換
整形TOML と JSON を双方向に変換。4種類の日付・時刻、テーブル配列、ドットキーに対応し、大きな整数も失いません。すべてブラウザ内で処理します。
CSV 変換
整形CSV / TSV と JSON を双方向に変換。区切り文字の自動判別、引用符とフィールド内改行の正しい処理、Excel の BOM 除去、数値は無損失のときだけ変換します。
JSON 整形
整形JSON をブラウザ内で整形・圧縮・検証。折りたたみ可能なツリーで表示し、キーと値の検索、行番号とハイライト付きの編集、Python dict への変換にも対応。
JSON → コード
整形JSON サンプルから TypeScript interface、Go struct、Java class、Rust struct を生成。欠けたキーは任意に、型の衝突は共用型に。すべてブラウザ内で処理します。
SQL 整形
整形SQL をオンラインで整形:キーワードの大文字小文字を統一し、SELECT / FROM / WHERE などの句ごとに改行。圧縮は余分な空白とコメントを削除します。
JSON5 変換
整形JSON5 を標準 JSON に変換。コメント・引用符なしキー・シングルクォート・末尾カンマ・16進数・Infinity に対応し、エラーは行と列を示します。