在 TOML、INI、ENV、Properties 和 JSON 格式之間轉換
透過3個簡單步驟在設定格式之間轉換:
從一個框架遷移到另一個框架時在格式之間轉換應用程式設定。例如,將傳統INI設定轉換為現代TOML,或將JSON設定轉換為Docker容器的特定於環境的ENV檔案。
在ENV檔案和JSON之間轉換設定資料以用於不同的部署環境。將JSON中的開發設定轉換為生產就緒的.env檔案,或從集中式JSON設定為Java應用程式產生Properties檔案。
透過將舊的INI或Properties檔案轉換為TOML或JSON格式來現代化舊版系統設定。在採用更新、更具表現力的格式的同時保留設定邏輯,這些格式支援更好的結構和註解。
透過在格式之間轉換來自動化CI/CD管線中的設定管理。從JSON範本產生特定於環境的設定,或將TOML設定轉換為容器化部署的ENV檔案。
管理使用不同格式的微服務之間的設定。將共用的JSON設定架構轉換為特定於服務的格式,如Node.js服務的ENV、Java服務的Properties或Rust服務的TOML。
在特定於平台的格式之間轉換設定。將Windows INI檔案轉換為Linux友善的ENV檔案,或將跨平台JSON設定轉換為在不同作業系統上執行的Java應用程式的特定於平台的Properties檔案。
每種設定格式都有獨特的特徵,適合不同的用例。理解這些差異有助於您為專案選擇正確的格式。
JSON是一種輕量級的階層資料格式,支援巢狀物件和陣列。廣泛用於Web API和現代應用程式,JSON提供嚴格的語法和出色的工具支援。但是,它不支援註解並需要引用字串,這可能使其對設定檔案不太人性化。最適合:具有巢狀資料的結構化設定、API回應、跨語言相容性。
TOML是一種現代設定格式,旨在易於閱讀和編寫。它支援部分(表)、巢狀結構和註解,非常適合應用程式設定。TOML使用清晰的鍵值語法,比JSON更不冗長,同時比INI更具結構化。在Rust、Python和現代工具生態系統中很受歡迎。最適合:應用程式設定、套件清單(如Cargo.toml)、人類可編輯的設定。
INI是一種簡單的傳統設定格式,由部分和鍵值對組成。廣泛用於Windows應用程式和較舊的系統,INI檔案易於閱讀但缺乏標準化。它們不支援巢狀結構或複雜的資料類型,將其使用限制為扁平設定。註解使用分號或井號符號。最適合:簡單設定、傳統Windows應用程式、扁平鍵值設定。
ENV檔案將環境變數儲存為簡單的KEY=VALUE對,每行一個。通常用於Docker、Node.js和12因素應用程式,ENV檔案非常適合特定於環境的設定。它們不支援巢狀結構、部分或複雜的資料類型,使其非常適合扁平設定。註解使用井號符號(#)。最適合:環境變數、Docker設定、特定於部署的設定、秘密管理。
Properties檔案是Java的原生設定格式,使用簡單的key=value或key:value語法。它們支援國際字元的Unicode跳脫,並可以使用反斜槓跨多行。雖然結構扁平,但properties支援透過點表示法進行階層命名(例如,database.host)。註解使用井號(#)或驚嘆號(!)。最適合:Java應用程式、國際化(i18n)資源套件、基於JVM的系統。
這取決於您的用例:使用TOML用於具有巢狀結構和註解的現代應用程式設定。使用ENV用於環境變數和Docker部署。使用JSON用於API設定和跨語言資料交換。使用INI用於簡單的、傳統相容的設定。使用Properties用於Java應用程式和i18n資源套件。考慮您的生態系統、工具支援和團隊熟悉度。
TOML部分(表)在JSON中轉換為巢狀物件,在ENV/Properties中轉換為點表示法鍵,在INI格式中轉換為部分。例如,TOML中的[database.mysql]在JSON中變為{"database": {"mysql": {...}}},或在ENV/Properties中變為database.mysql.*鍵,或在INI中變為[database.mysql]部分。
INI格式有幾個限制:沒有標準化規範,限於部分內的扁平鍵值對,沒有對陣列或巢狀物件的原生支援,不一致地處理資料類型(所有內容都是字串),以及跨實作的變化的註解語法。它最適合簡單的扁平設定。
遵循這些慣例:對變數名使用UPPERCASE_WITH_UNDERSCORES(例如,DATABASE_HOST)。避免空格和特殊字元。使用反映階層結構的描述性名稱(DATABASE_MYSQL_HOST)。除非包含空格或特殊字元,否則不要引用值。使用常用前綴對相關變數進行分組。
Properties檔案預設使用ISO-8859-1(Latin-1)編碼。非拉丁字元必須使用Unicode跳脫序列(\uXXXX)進行跳脫。現代Java應用程式可以讀取UTF-8 Properties檔案,但為了最大相容性,請使用native2ascii工具或讓此轉換器自動處理編碼。
可以,在轉換為ENV或Properties格式時,巢狀的JSON結構會自動扁平化為點表示法。例如,{"database": {"host": "localhost"}}在ENV中變為DATABASE_HOST=localhost。陣列轉換為索引鍵:{"servers": ["a", "b"]}變為SERVERS_0=a和SERVERS_1=b。
TOML(# 註解)、INI(# 或 ; 註解)、ENV(# 註解)和Properties(# 或 ! 註解)都支援註解。JSON在其標準規範中不支援註解。如果您需要註解,請考慮使用TOML或JSON5(JSON擴充)作為設定檔案。
絕對安全。所有轉換完全在您的瀏覽器中使用JavaScript進行。您的設定資料,包括API金鑰和密碼等敏感值,從不上傳到任何伺服器或透過網路傳輸。為了在生產金鑰方面獲得額外的安全性,請考慮在離線環境中使用此工具。