TOML 使用

Undefined443發表於2024-06-06

TOML Reference

TOML
Tom's Obvious, Minimal Language

TOML 被設計成可以無歧義地對映為雜湊表。(相當於 JSON 物件吧)

註釋

# 這是一個全行註釋
key = "value"  # 這是一個行末註釋
another = "# 這不是一個註釋"

鍵值對

TOML 文件最基本的構成區塊是鍵值對。

name = "Orange"
physical.color = "orange"
physical.shape = "round"
site."google.com" = true

等價於 JSON 的如下結構:

{
  "name": "Orange",
  "physical": {
    "color": "orange",
    "shape": "round"
  },
  "site": {
    "google.com": true
  }
}

字串

多行基本字串由三個引號包裹,允許折行。

  • 緊隨開頭引號的那個換行會被去除
  • 其它空白和換行會被原樣保留
str1 = """
Roses are red
Violets are blue"""

陣列

陣列是內含值的方括號。

  • 空白會被忽略
  • 子元素由逗號分隔
  • 陣列可以包含與鍵值對所允許的相同資料型別的值
  • 可以混合不同型別的值
integers = [ 1, 2, 3 ]
colors = [ "紅", "黃", "綠" ]
nested_array_of_ints = [ [ 1, 2 ], [3, 4, 5] ]
nested_mixed_array = [ [ 1, 2 ], ["a", "b", "c"] ]
string_array = [ "所有的", '字串', """是相同的""", '''型別''' ]

# 允許混合型別的陣列
numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ]
contributors = [
  "Foo Bar <foo@example.com>",
  { name = "Baz Qux", email = "bazqux@example.com", url = "https://example.com/bazqux" }
]
  • 陣列可以跨行
  • 陣列的最後一個值後面可以有終逗號(也稱為尾逗號)
  • 值、逗號、結束括號前可以存在任意數量的換行和註釋
  • 陣列值和逗號之間的縮排被作為空白對待而被忽略
integers2 = [
  1, 2, 3
]

integers3 = [
  1,
  2, # 這是可以的
]

表(也被稱為雜湊表或字典)是鍵值對的集合。

  • 它們由表頭定義,連同方括號作為單獨的行出現
  • 看得出表頭不同於陣列,因為陣列只有值
  • 在它下方,直至下一個表頭或檔案結束,都是這個表的鍵值對
  • 表不保證保持鍵值對的指定順序
[table-1]
key1 = "some string"
key2 = 123

[table-2]
key1 = "another string"
key2 = 456

等價於:

{
  "table-1": {
    "key1": "some string",
    "key2": 123
  },
  "table-2": {
    "key1": "another string",
    "key2": 456
  }
}

表陣列

這可以透過把表名寫在雙方括號裡的表頭來表示

  • 表頭的第一例定義了這個陣列及其首個表元素,而後續的每個則在該陣列中建立並定義一個新的表元素
  • 這些表按出現順序插入該陣列
[[products]]
name = "Hammer"
sku = 738594937

[[products]]  # 陣列裡的空表

[[products]]
name = "Nail"
sku = 284758393

color = "gray"

等價於:

{
  "products": [
    { "name": "Hammer", "sku": 738594937 },
    { },
    { "name": "Nail", "sku": 284758393, "color": "gray" }
  ]
}

相關文章