TOML配置文件


Toml是一種易讀、mini語言,由githubCEOTom創建。Tom's Obvious, Minimal Language

TOML致力於配置文件的小型化和易讀性。wikihttps://github.com/toml-lang/toml/wiki,官網:https://github.com/toml-lang/tomlgo語言解析:https://github.com/BurntSushi/toml

與其他格式比較

TOML與用於應用程序配置和數據序列化的其他文件格式(YAMLJSON)具有相同的特性。TOMLJSON都很簡單,並且使用普遍存在的數據類型,這使得它們易於編寫代碼或使用機器進行解析。TOMLYAML都強調人的可讀性,比如注釋,它使理解給定行的目的變得更容易。TOML的不同之處在於,它支持注釋(不像JSON),但保持了簡單性(不像YAML)

由於TOML被顯式地設計為一種配置文件格式,所以解析它很容易,但並不打算序列化任意的數據結構。TOML的文件頂層是一個哈希表,它很容易在鍵中嵌套數據,但是它不允許頂級數組或浮點數,所以它不能直接序列化一些數據。也沒有標准來標識TOML文件的開始或結束,這會使通過流發送文件變得復雜。這些細節必須在應用層進行協商。

INI文件經常與TOML進行比較,因為它們在語法和用作配置文件方面具有相似性。然而,INI沒有標准化的格式,它們不能優雅地處理超過一兩個層次的嵌套。

基礎語法

 

# This is a TOML document.

title = "TOML Example"

[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # First class dates

[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true

[servers]

  # Indentation (tabs and/or spaces) is allowed but not required
  [servers.alpha]
  ip = "10.0.0.1"
  dc = "eqdc10"

  [servers.beta]
  ip = "10.0.0.2"
  dc = "eqdc10"

[clients]
data = [ ["gamma", "delta"], [1, 2] ]

# Line breaks are OK when inside arrays
hosts = [
  "alpha",
  "omega"
]
  • 大小寫敏感,必須是UTF-8編碼

  • 注釋:#

  • 空白符:tab(0x09)space(0x20)

  • 換行符:LF(0x0A)CRLF(0x0D 0x0A)

  • 鍵值對:同一行,無值的鍵不可用,每行只能保存一個鍵值對

TOML主要結構是鍵值對,與json類似。值必須是如下類型:String, Integer, Float, Boolean, Datetime, Array, or Inline Table

keys

推薦裸字符,可以包含引號和點號,如"127.0.0.1"="value"

String

TOML中有4種字符串表示方法:基本、多行-基本、字面量、多行-字面量

基本字符串

由雙引號包裹,所有Unicode字符均可出現,除了雙引號、反斜線、控制字符(U+0000 to U+001F)需要轉義。

多行-基本字符串

由三個雙引號包裹,除了分隔符開始的換行外,字符串內的換行將被保留

str1 = """
Roses are red
Violets are blue"""

字面量字符串

由單引號包裹,其內不允許轉義,因此可以方便的表示基本字符串中需要轉義的內容

winpath = 'C:\Users\nodejs\templates'

多行-字面量字符串

與多行-基本字符串相似

str1 = '''
Roses are red
Violets are blue'''

數值與BOOL

int1 = +99

flt3 = -0.01

bool1 = true

日期時間

date1 = 1979-05-27T07:32:00Z

數組

數組使用方括號包裹。空格會被忽略,包括換行符。元素使用逗號分隔。

arr1 = [ 1, 2, 3 ]
arr2 = [ "red", "yellow", "green" ]
arr3 = [ [ 1, 2 ], [3, 4, 5] ]

表格

表格也稱為哈希表或字典,用來存儲鍵值對。表格名由方括號包裹,且自成一行。

[dog]
onekey = onevalue

[dog.tater]
type = "pug"

TOML配置Go處理

參考:Golang學習--TOML配置處理 https://studygolang.com/articles/12032?fr=sidebar

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM