Toml和Json对比学习

键值对

1
2
3
4
name = "Zack"
age = "18"
favorite.pet = "Cat"
favorite.hobby = "Draw"
1
2
3
4
5
6
7
8
{
"name": "Zack",
"age": "18",
"favorite": {
"pet": "Cat",
"hobby": "Drwa"
}
}

注意

  1. 在toml中,顶层表中的键值对无法后置,像上述nameage不能放在favorite的下面
  2. 在toml中,结构不受缩进影响

字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
family = '''
Zack
Jack
'''

# 上述等效于
family = """
Zack
Jack
"""

# 上述等效于
family = """
Zack\
Jack\
"""
1
2
3
{
"family": "Zack\nJack"
}

注意

  1. 单行字面量不支持转义
  2. ”“” 双行字面量作用下,可加 \ 显式,也可不加

数组

toml的数组跟json的非常相像

1
2
3
4
5
6
hobby = [
[
"game",
"running",
]
]
1
2
3
4
5
6
7
8
{
"hobby": [
[
"game",
"running"
]
]
}

注意

  1. 在toml中,数组可以跨行,意味着可以将数组的每个元素都写在单独的一行
  2. 在toml中,数组支持尾逗号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
profile.age = "18"
profile.name = "Zack"
profile.jobs.Efficlab = true
about.pets.cat = "Meow"

# 以上等效于
[profile]
age = "18"
name = "Zack"

[about.pets]
cat = "Meow"

[profile.jobs]
Efficlab = true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"profile": {
"age": "18",
"name": "Zack",
"jobs": {
"Efficlab" = true
}
},
"about": {
"pets": {
"cat": "Meow"
}
}
}

注意

  1. 内联表只能用一行来写,如jobs = { Efficlab = true }

表数组

1
2
3
4
5
6
7
8
9
10
11
12
13
[[profile]]
name = "Zack"
age = "18"

[[profile]]
name = "Alice"
age = "17"

# 等效写法
profile = [
{ name = "Zack", age = "18" },
{ name = "Alice", age = "17"},
]
1
2
3
4
5
6
7
8
9
10
11
12
{
"profile": [
{
"name": "Zack",
"age": "18"
},
{
"name": "Alice",
"age": "17"
}
]
}

注释

toml支持用#来注释文本,而json不支持注释