ini
语法: key = value
注释: ;这是注释
表达能力: 简单键值对, 可用selection变相实现数组
功能: 配置文件
[serverA]
ip = 192.168.1.1
port = 8080
[serverB]
ip = 192.168.1.2
port = 8080
xml
语法:
key又叫tag,value叫data,key可以有属性,叫metadata
注释:
表达能力: 键值对, 数组, map, 层层嵌套形成树状结构
功能: 配置文件, 数据交换
<mail-list>
<mail important=false>
<title>Mail 1</title>
<author>Tom</author>
<content>I am a cat</content>
</mail>
<!-- this is comment -->
<mail important=true>
<title>Mail 2</title>
<author>Jerry</author>
<content>I am a mouse</content>
</mail>
</mail-list>
json
语法: js object
注释: 无
表达能力: 键值对, 数组, map, 层层嵌套形成树状结构
功能: 配置文件, 数据交换
{
"mailList":[
{
"title": "Mail 1",
"author": "Tom",
"content": "I am a cat"
},
{
"title": "Mail 2",
"author": "Jerry",
"content": "I am a mouse"
}
]
}
yaml
语法: 缩进, :, -, <<, *
注释: # 这是注释
表达能力: 键值对, 数组, map, 层层嵌套形成树状结构
功能: 配置文件
users:
- Tom
- Jerry
# 锚点
defaults: &defaults
adapter: postgres
host: localhost
development:
database: myapp_development
<<: *defaults # 引用
test:
database: myapp_test
<<: *defaults # 引用
总结
类型 | 语法 | 注释 | 表达能力 | 配置文件能力 | 数据交换能力 |
---|---|---|---|---|---|
ini | 简单 | ; | 低 | 低 | - |
json | 中 | 无 | 高 | 不易阅读 | 高 |
xml | 中 | <!-- 注释 --> | 高 | 不易阅读 | 数据繁杂,效率低 |
yaml | 中 | # | 高 | 语法复杂 | - |
根据具体情况使用 |