JSON を Properties に変換
JSON オブジェクトを Java の .properties 形式に変換。ネストオブジェクトのフラット化とコメント復元に対応、処理はブラウザ内で完結。
JSON オブジェクトから、java.util.Properties や Spring Boot がそのまま読み込める Java の .properties ファイルを生成します。ネストしたオブジェクトは server.port=8080 のようなドット区切りのキーになり、区切り記号や改行はバックスラッシュでエスケープされるため、往復変換しても値が崩れません。$comments マップは # コメント行として書き戻されます。変換はブラウザ内で完結し、何もアップロードされません。
JSON to Properties 変換ツールについて
.properties は行単位で解釈される形式なので、Java が行を分割する位置を変えてしまう文字はシリアライズ時にエスケープが必要です。キー内の空白は \ (バックスラッシュ+空白)に、値に含まれる = や : は \= や \: に、改行は \n になります。キーと値は = で結ばれ、ネストした JSON オブジェクトは元の順序のままドット区切りのキーに展開されます。café のような非 ASCII 文字は \uXXXX エスケープにはせず、UTF-8 のまま出力します。Java 9 以降はリソースバンドルを UTF-8 として読み込みますが、Properties.load(InputStream) は ISO-8859-1 でデコードするため、自前のコードで読み込む場合は UTF-8 の Reader を経由してください。
こちらも必要かもしれません
JSON を .properties に変換する方法
- 1
JSON を用意する
入力欄にオブジェクトを貼り付けるか、フラスコアイコンで { "server": { "port": 8080 } } のサンプルを読み込みます。トップレベルのキーがそのままプロパティ名になります。
- 2
キーの区切り文字を選ぶ
詳細オプションでは、spring.datasource.url のような Java 流のドット区切りを維持するか、別の区切り文字にするか、フラット化をオフにしてネストを JSON テキストのまま残すかを選べます。
- 3
変換してエスケープを確かめる
「変換」を押すと、末端の値がすべて key=value 行になります。キーの空白、値の中の区切り記号、改行にはバックスラッシュが付くので、java.util.Properties で読み戻しても同じ値になります。
- 4
src/main/resources に置く
出力をコピーするか .properties ファイルとしてダウンロードし、src/main/resources に配置します。方向切り替えアイコンで JSON に戻すこともできます。
参考資料
- Java SE — java.util.Properties
このツールの出力が対象とする .properties ファイル形式を定義する公式 Java API ドキュメント。
- RFC 8259 — The JSON Data Interchange Format
このツールが解析する JSON 入力フォーマットの元になっている IETF 仕様。
関連する開発者ツール
JSON to Properties よくある質問
- どの文字がバックスラッシュでエスケープされますか?
- キー内の空白、値の中の = と :、そして改行です。たとえば a\ b=x\=y や note=line1\nline2 のように書かれ、いずれも java.util.Properties がファイル読み込み時に元へ戻すエスケープです。
- 日本語などの非 ASCII 文字は \uXXXX に変換されますか?
- 変換されず、UTF-8 のまま書き出されます。Java 9 以降は .properties のリソースバンドルを UTF-8 で読み込みますが、java.util.Properties#load(InputStream) は ISO-8859-1 を前提にしています。コードでこの API を使っているなら、UTF-8 の Reader を渡して load(Reader) で読み込んでください。
- JSON から Spring Boot の application.properties を作れますか?
- 作れます。Spring Boot のプロパティ名はドット区切りなので、デフォルトのドット区切りのまま { "server": { "port": 8080 } } を変換すれば server.port=8080 が得られます。
- 配列は hosts[0]=a のようなインデックス形式になりますか?
- なりません。配列は JSON テキストを値とする 1 つのプロパティとして hosts=["a","b"] のように出力され、Spring Boot のインデックス表記(hosts[0]=a)は生成されません。
- server.port=8080 の 8080 は数値として扱われますか?
- .properties の値は常に文字列なので、true・false・数値もプレーンテキストで書かれます。Properties to JSON で型の推論を有効にすれば、JSON の本来の型に戻せます。
- $comments の内容はどこに出力されますか?
- 対応するキーの直前に # コメント行として書かれます。Properties to JSON が出力した $comments オブジェクトもこの形で戻せます。key=value 行だけが必要なら「コメント」を「無視する」にしてください。
- 変換中にデータが外部へ送られることはありますか?
- ありません。解析と整形はすべてブラウザ内で行われ、入力データを含むネットワークリクエストは発生しません。