Properties を JSON に変換
ドットキーのネスト化と型推論に対応し、キー直上のコメントを $comments に残す Java .properties → JSON 変換。処理はブラウザ内で完結。
Java の .properties ファイルを貼り付けるだけで、ブラウザ上で即座に JSON に変換します。app.cache.ttl のようなドット区切りのキーはデフォルトでネストしたオブジェクトになり、数値や真偽値らしい値は実際の JSON 型に推論されます。プロパティのすぐ上に書かれたコメントはそのキーに紐づけて $comments フィールドに残りますが、次のプロパティとの間に空行があるコメント(ファイル冒頭の著作権表示など)と空行そのものは JSON に含まれません。キーと値は java.util.Properties の構文規則どおりに読み取ります(=・:・空白による区切り、# と ! のコメント、末尾バックスラッシュによる行継続、\uXXXX エスケープ)。
Properties to JSON 変換ツールについて
Java の .properties 形式(key=value、key:value、あるいは key value のいずれかで、コメントは # または !)は、初期の java.util.Properties API 以来、標準的な設定ファイルおよび i18n リソースバンドルのフォーマットとして使われてきました。このツールは、末尾のバックスラッシュによる行継続や \uXXXX 形式の Unicode エスケープを含め、java.util.Properties が定める構文どおりにこの形式を解析し、確認・比較したり JavaScript のビルドパイプラインに渡したりできる JSON を生成します。ドットキーのネスト化を有効にすると app.cache.ttl=60 は { "app": { "cache": { "ttl": 60 } } } になり、型推論は "false" のような文字列を実際の真偽値に変換し、コメント処理は、プロパティの直上でその内容を説明している # や ! の行を $comments フィールドに残すかどうかを制御します。
こちらも必要かもしれません
.properties を JSON に変換する方法
- 1
.properties の内容を貼り付け
.properties ファイルの内容を入力欄にコピーするか、フラスコアイコンをクリックしてコメントとドットキーを含むサンプルを読み込みます。
- 2
必要に応じて詳細オプションを調整
詳細オプションを開くと、型推論、ドットキーのネスト化(および区切り文字)、コメントを $comments として保持するか無視するかを切り替えられます。
- 3
Convert をクリック
パーサーがファイルの順にプロパティを読み取り、バックスラッシュによる継続行をつなげ、\uXXXX などのエスケープをデコードし、プロパティの直上にあるコメントをそのキーに紐づけてから JSON オブジェクトを生成します。以降オプションを切り替えると即座に再計算されます。
- 4
JSON をコピーまたはダウンロード
JSON をコピーするか、.json ファイルとしてダウンロードします。方向切り替えアイコンから逆方向の変換である JSON to Properties に移動できます。
参考資料
- Java SE — java.util.Properties
コメント構文、区切り文字、行継続のルールなど、このパーサーが従う .properties ファイル形式を定義する公式 Java API ドキュメント。
- RFC 8259 — The JSON Data Interchange Format
このツールが生成する JSON 形式の元になっている IETF 仕様。
関連する開発者ツール
Properties to JSON よくある質問
- Java の .properties ファイルをオンラインで JSON に変換するには?
- .properties ファイルの内容を入力欄に貼り付け、「Convert」をクリックします。各 key=value 行が JSON フィールドになり、ドットキーはデフォルトでネストされます。結果をコピーするか、.json ファイルとしてダウンロードできます。
- Java と同じように .properties を読み取れますか?
- キーと値の読み取り方は同じです。=、:、空白のいずれでも区切れ、# または ! で始まる行はコメント、末尾のバックスラッシュで次の行へ継続し、\uXXXX は文字にデコードされます。同じキーが 2 回出てきた場合は、Properties.load と同様に後の値が使われます。ただし JSON はファイルの完全な写しではなく、空行と、プロパティの直上にないコメントは残りません。
- .properties ファイルはサーバーにアップロードされますか?
- されません。すべての解析は JavaScript によりブラウザ内でローカルに行われ、ネットワーク経由で何も送信されません。内部のホスト名や認証情報を含む properties ファイルにとって、この点は重要です。
- ドット区切りの .properties キーをネストした JSON オブジェクトに変換できますか?
- できます。「Dotted keys → nested」を有効にすると(デフォルトの区切り文字は「.」)、server.port=8080 のようなキーは { "server": { "port": 8080 } } になります。無効にすると、フラットなドットキーが単一の JSON フィールドとして保持されます。
- .properties を JSON に変換してもコメントは保持されますか?
- プロパティに属するコメントだけが残ります。キーのすぐ上に空行を挟まず書かれた # や ! のコメントは、そのキーのドット区切りのパスを名前にして $comments に入ります。ファイル冒頭の説明、後ろに空行が続くコメント、ファイル末尾のコメント、そして空行自体は残りません。値だけの JSON が欲しい場合は、詳細オプションで「Comments」を「Ignore」に切り替えてください。
- .properties の真偽値や数値はどのように扱われますか?
- 「Infer types」がオンの場合、真偽値になるのは true と false そのものだけ、数値になるのは 8080 や 0.75 のような通常の 10 進数だけです。文字列に戻したときに表記が変わってしまう値(1.0、007、1.2.3 のようなバージョン番号)は文字列のまま残ります。「Infer types」をオフにすると、すべての値が文字列として保持されます。
- .properties と JSON にはどんな違いがありますか?
- Java の .properties は行志向のキーと値のテキストで、アプリケーション設定や i18n リソースバンドルに使われます。一方 JSON はネスト構造と型付きの値をネイティブにサポートします。変換することで、properties ファイルを構造化データとして比較したり、JSON を期待する JavaScript/TypeScript ツールチェーンに取り込んだりできます。