Toml是一种易读、mini语言,由github前CEO,Tom创建。Tom's Obvious, Minimal Language。

TOML致力于配置文件的小型化和易读性。wiki:https://github.com/toml-lang/toml/wiki,官网:https://github.com/toml-lang/toml,go语言解析:https://github.com/BurntSushi/toml

与其他格式比较

TOML与用于应用程序配置和数据序列化的其他文件格式(如YAML和JSON)具有相同的特性。TOML和JSON都很简单,并且使用普遍存在的数据类型,这使得它们易于编写代码或使用机器进行解析。TOML和YAML都强调人的可读性,比如注释,它使理解给定行的目的变得更容易。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

最新文章

  1. OpenLayers图形与列表互动
  2. springmvc+mongodb+maven 项目搭建配置
  3. 如何使用junit4写单元测试用例(转)
  4. 带金属光泽的模型shader的实现
  5. Oracle日期查询:季度、月份、星期等时间信息
  6. 团队作业8——第二次项目冲刺(Beta阶段)5.27
  7. mysql 使用问题?
  8. Android实训案例(八)——单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局
  9. ie浏览器部分图片不显示
  10. day14 生成器迭代器
  11. modsign: could't get uefi db list
  12. HBASE的Java与Javaweb(采用MVC模式)实现增删改查附带源码
  13. ios表单上传图片或文件
  14. 学习JS的心路历程-参数的传递(下)
  15. WebDriver API 实例详解(四)
  16. 【杂记】linux下各种软件安装方法(持续记录)
  17. LoadRunner录制:检查点
  18. etymology-I
  19. vuex相关知识点
  20. 使用 ServerSocket 进行文件上传,以及用Tomcat启动ServerSocket时,会卡死解决

热门文章

  1. flow
  2. matlab学习笔记13_1 函数返回值
  3. SQL Server PARTITION FUNCTION(分区)
  4. perl oneline
  5. js获取当前时间,格式YYYY-MM-DD
  6. shoshana-技术文集
  7. Vue框架(一)——Vue导读、Vue实例(挂载点el、数据data、过滤器filters)、Vue指令(文本指令v-text、事件指令v-on、属性指令v-bind、表单指令v-model)
  8. expect——通过编写自动化脚本实现信息交互(整理)
  9. Go基础编程实践(六)—— 文件
  10. golang 之 sql