YAML文件数据类型
YAML 是 YAML Ain't Markup Language 的递归缩写。它最初的意思是 "Yet Another Markup Language",但后来为了更准确地反映其以数据为中心的特性,改成了现在的名字。
YAML 是 YAML Ain't Markup Language 的递归缩写。它最初的意思是 "Yet Another Markup Language",但后来为了更准确地反映其以数据为中心的特性,改成了现在的名字。
核心特点:
-
可读性高:使用缩进和简单的符号来表示结构,类似于 Python。
-
易于使用:语法简单,直观。
-
交互性好:与脚本语言(如 Python, Ruby, JavaScript)有很好的交互性。
-
表达能力强:支持复杂的数据结构。
-
可扩展性:支持自定义数据类型。
yml的数据类型
1、键值对 (Key-Value)
name: John Doe
age: 30
2、对象
person:
name: John Doe
age: 30
city: New York
3、 数组 / 列表
fruits:
- Apple
- Orange
- Banana
使用示例
# 应用配置示例
app:
name: "我的超级应用"
version: 1.0.0
enabled: true
server: &server-config # 定义服务器配置锚点
host: "0.0.0.0"
port: 8080
ssl: false
# 数据库配置
database:
primary:
<<: *server-config # 继承服务器配置锚点
name: "primary_db"
username: "admin"
password: "secret" # 在实际应用中,密码应从环境变量读取
pool-size: 10
replica:
<<: *server-config # 继承服务器配置锚点,并覆盖端口
port: 5433
name: "replica_db"
# 功能开关
features:
- name: "用户注册"
enabled: true
- name: "黑暗模式"
enabled: false
- name: "支付系统"
enabled: true
providers: [ "Stripe", "PayPal" ] # 内联数组
# 日志配置
logging:
level: "INFO"
file: "/var/log/myapp/app.log"
pattern: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
# 应用配置示例
app:
name: "我的超级应用"
version: 1.0.0
enabled: true
server: &server-config # 定义服务器配置锚点
host: "0.0.0.0"
port: 8080
ssl: false
# 数据库配置
database:
primary:
<<: *server-config # 继承服务器配置锚点
name: "primary_db"
username: "admin"
password: "secret" # 在实际应用中,密码应从环境变量读取
pool-size: 10
replica:
<<: *server-config # 继承服务器配置锚点,并覆盖端口
port: 5433
name: "replica_db"
# 功能开关
features:
- name: "用户注册"
enabled: true
- name: "黑暗模式"
enabled: false
- name: "支付系统"
enabled: true
providers: [ "Stripe", "PayPal" ] # 内联数组
# 日志配置
logging:
level: "INFO"
file: "/var/log/myapp/app.log"
pattern: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
注意事项
-
空格,不是 Tab: 这是最常见的错误来源。确保你的编辑器将 Tab 自动转换为空格。
-
缩进一致: 同一层级的缩进空格数必须一致。
-
字符串引号: 当字符串包含
:,#,[,{,],}等可能引起歧义的字符时,务必使用引号。 -
使用注释: 复杂的配置使用注释来说明,方便他人和自己日后维护。
-
利用锚点和别名: 对于重复的配置块,使用锚点和别名来保持 DRY(Don't Repeat Yourself)原则。
-
在线验证: 如果不确定 YAML 格式是否正确,可以使用在线 YAML 验证工具(如 YAML Lint)进行检查。
-

更多推荐




所有评论(0)