JSON 轉 Properties 工具
把 JSON 物件轉換成 Java .properties 格式,支援巢狀物件展平與註解回填,純瀏覽器端運算。
輸入 JSON 物件,就能產生 java.util.Properties 與 Spring Boot 都能讀取的 Java .properties 設定檔。巢狀物件會變成 server.port=8080 這種點號鍵;分隔字元和換行都以反斜線跳脫,數值來回轉換後依然不變;$comments 對照表則寫回成 # 註解行。轉換在瀏覽器內執行,不會上傳任何資料。
關於 JSON 轉 Properties 工具
.properties 是一行一行解析的格式,因此序列化時,只要會影響 Java 切分一行的字元都必須跳脫:鍵裡的空白寫成 \ (反斜線加空白),值裡的 = 或 : 寫成 \= 或 \:,換行寫成 \n。鍵與值之間一律用 = 連接,巢狀 JSON 物件則依原本順序展平成點號鍵。café 這類非 ASCII 文字會直接以 UTF-8 寫出,不會轉成 \uXXXX 跳脫序列。Java 9 之後的版本以 UTF-8 讀取 resource bundle,但 Properties.load(InputStream) 是用 ISO-8859-1 解碼,所以在自己的程式碼裡載入時,請透過 UTF-8 的 Reader 讀取。
你可能還需要
如何把 JSON 轉換成 .properties
- 1
準備 JSON 物件
在輸入欄貼上物件,或按燒瓶圖示載入 { "server": { "port": 8080 } } 範例;最外層的每個鍵都會成為屬性名稱。
- 2
設定鍵的分隔符號
進階選項可以保留 Java 慣用的點號(spring.datasource.url 就是這種寫法)、換成其他分隔符號,或關閉展平,讓巢狀物件以 JSON 文字保留。
- 3
轉換並檢查跳脫
按下「轉換」後,每個末端值寫成一行 key=value;鍵裡的空白、值裡的分隔字元與換行都會加上反斜線,java.util.Properties 讀回來的值和原本一致。
- 4
放進 src/main/resources
複製輸出內容,或下載成 .properties 檔放到 src/main/resources;需要再轉回 JSON 時,按切換方向圖示。
參考資料
- Java SE — java.util.Properties
官方 Java API 文件,定義了本工具輸出所對應的 .properties 檔案格式。
- RFC 8259 — The JSON Data Interchange Format
本工具解析的 JSON 輸入格式所依據的 IETF 規範。
相關開發者工具
JSON 轉 Properties 常見問題
- 哪些字元前面會加上反斜線?
- 鍵裡的空白、值裡的 = 和 :,以及換行字元。例如 a\ b=x\=y、note=line1\nline2,這些正是 java.util.Properties 載入檔案時會還原的跳脫寫法。
- 中文等非 ASCII 字元會寫成 \uXXXX 嗎?
- 不會,會直接以 UTF-8 寫出原文。Java 9 之後是以 UTF-8 載入 .properties 的 resource bundle;但 java.util.Properties#load(InputStream) 預設用 ISO-8859-1 解碼,若你的程式用的是這個 API,請改用 load(Reader) 搭配 UTF-8 的 Reader。
- 可以從 JSON 產生 Spring Boot 的 application.properties 嗎?
- 可以。Spring Boot 的屬性名稱本來就是點號命名,使用預設的點號分隔符號時,{ "server": { "port": 8080 } } 會變成 server.port=8080。
- JSON 陣列會寫成 hosts[0]=a 這種索引格式嗎?
- 不會。陣列會當成單一值寫出,內容就是它的 JSON 文字,例如 hosts=["a","b"];Spring Boot 的 hosts[0]=a 索引寫法不會產生。
- server.port=8080 裡的 8080 還算數字嗎?
- .properties 的值永遠是字串,所以 true、false 和數字都以純文字寫出。用 Properties 轉 JSON 並開啟型別推斷,就能還原成真正的 JSON 型別。
- $comments 裡的說明會怎麼處理?
- 會寫成對應鍵上方的 # 註解行,Properties 轉 JSON 產出的 $comments 物件因此能原樣帶回來。把「註解處理」設為「忽略」,輸出就只剩 key=value 行。
- 轉換時資料會傳到伺服器嗎?
- 不會。解析和格式化全在瀏覽器本機完成,不會發出任何夾帶你資料的網路請求。