Properties から JSON への変換 — Java Properties ファイルを JSON に変換
Java .properties ファイルを JSON に変換します。ドット記法のネスト、Unicode エスケープ、複数行値を処理。ブラウザ内で、アップロード不要。
Properties to JSON
Convert Java .properties files to JSON. Supports nested keys (database.host → nested object). Works entirely in your browser.
Java .properties ファイルは、今も主流で使われている最も古い設定形式です。XML 設定、YAML、TOML、JSON よりも前から存在し、1995 年に JDK 1.0 で java.util.Properties クラスの一部として導入されました。構文は単純で、3 十年近く変更なしでも生き残ってきました。1 行に 1 つのキーと値のペア、オプションの # または ! で始まるコメント、行連結のバックスラッシュ、非 ASCII 文字の Unicode エスケープです。形式の longevity は、メンテナを開発している開発者より古い .properties ファイルが本番環境にあることを意味し、それらのファイルを JSON に変換することは、レガシー Java サービスをモダンなスタックに移行する最初のステップです。
変換を定義する設計上の決定は、ドット記法ネストです。database.host、database.port、database.name のようなキーを持つ .properties ファイルは意味的にネストされた構造を記述しています。ドットは仕様の一部ではなく慣例です。フラットモード出力はキーをそのまま保持し、安全なデフォルトであり、単純なキーと値のファイルに適した選択です。ネストモード出力はドットから階層を推論し、同じ構造を持つ JSON オブジェクトを生成し、出力形式が構造化されることが期待される設定移行に適した選択です。
Unicode エスケープ処理も、手動変換を痛苦にするもう一つのポイントです。Java .properties ファイルはすべての非 ASCII 文字を \uXXXX シーケンスとしてエンコードします。こんにちは という単語は \u3053\u3093\u306b\u3061\u306f になります。これらのエスケープをデコードせずに日本語、アラビア語、キリル文字のコンテンツを含む properties ファイルをテキストエディタで読むことは事実上不可能です。本ツールは変換中にこれらすべてをデコードし、テキストエディタでは読めないファイルを任意のテキストエディタやブラウザで完全に人間が読める JSON ファイルにします。
使い方
.properties ファイルを貼り付ける
.properties ファイルの内容を入力に貼り付けます。パーサーはキーと値のペアを読み取り、行連結(行末のバックスラッシュ)を処理し、Unicode エスケープ(`\uXXXX`)をアンエスケープし、バックスラッシュエスケープされた文字を解決します。
ネストモードを選択する
フラットモードはキーをそのまま保持します(例:`com.example.host` → `com.example.host: 値`)。ドット記法ネストはドットで分割してネストされたオブジェクトを生成します(例:`com.example.host` → `com > example > host: 値`)。
JSON をコピーまたはダウンロードする
JSON をクリップボードにコピーするか、.json ファイルとしてダウンロードします。出力はプリティプリントされた JSON で、入力順序が明示的に保持されない限りキーはソートされます。
よくある質問
重複するキープレフィックスを持つドット記法ネストはどのように処理されますか?
`com.example.host=localhost` と `com.example=value` の両方を持つファイルの場合、ネストアルゴリズムは値がネストされた子と共存するように昇格させます:`{"com": {"example": {"_value": "value", "host": "localhost"}}}`。この衝突が発生すると警告が表示されるので、結果を確認できます。
コメントは JSON 出力で保持されますか?
いいえ。.properties のコメント(`#` または `!` で始まる行)は削除されます。値と一緒にメタデータを保持する必要がある場合は、フラットモードを使用してコメントキーを手動で追加するか、コメントをネイティブでサポートする YAML に切り替えてください。
Unicode エスケープシーケンスはどのように処理されますか?
Java .properties ファイルは非 ASCII 文字を `\uXXXX` シーケンスとしてエンコードします。本ツールはこれらをデコードして JSON 出力で実際の Unicode 文字にします。たとえば、`message=\u3053\u3093\u306b\u3061\u306f` は `"message": "こんにちは"` になります。
Spring Boot application.properties を扱えますか?
はい。Spring Boot の properties ファイルは同じ構文を使用します。プロファイル(`application-dev.properties`)とプレースホルダ解決(`${other.key}`)はリテラル文字列のまま残されます。完全な Spring 設定解決のためには、Spring Boot ツールチェーンをご利用ください。本ツールはフォーマット変換を扱います。
JSON 出力でブール値と数値はどのように型付けされますか?
デフォルトではすべての値が JSON 文字列です(安全なデフォルト。.properties の値は常に文字列です)。型推論をオンにして、`true`、`false`、`yes`、`no`、`on`、`off` をブール値に、整数/浮動小数点に見える文字列を数値に変換します。推論は Java 規約のプロパティ値強制に従います。
制限事項
- プレースホルダ解決なし`${var}` プレースホルダ参照と Spring プロパティ展開はリテラル文字列として保持されます。プロパティ解決にはプロパティ処理フレームワークをご利用ください。
- XML properties 形式なしJava は XML ベースの .properties 形式(`<!DOCTYPE properties>`)もサポートします。本ツールは key=value テキスト形式のみを扱います。XML properties には、XML to JSON コンバーターをご利用ください。
- ドット記法の深さが混在するキーは警告を生成しますネストモードが有効で、一部のキーが 2 つの部分を持ち、兄弟キーが 3 つの部分を持つ場合、結果の JSON は深さが混在するネストを持ちます。出力は有効ですが、構造が期待と一致しない場合があります。
プラットフォーム別の注意点
- macOS
- IntelliJ IDEA と Eclipse はどちらも .properties ファイルをうまく可視化します。ブラウザツールは、チャットやメールからの properties スニペットを非 Java ツールと統合するために JSON に変換するのに適しています。
- Linux
- コマンドラインで変換する場合、`properties-to-json`(npm)が同じことを行います。ブラウザツールはドット記法ネストトグルとインタラクティブな型推論プレビューを追加します。
- Web
- 完全にクライアントサイドで動作します。読み込み後はオフラインでも動作します。