JSON文件格式
简介: JSON是JavaScript对象表示法,它是一种基于文本独立于语言的轻量级数据交换格式
JSON中的分隔符限于
单引号" ' " 双引号 " ' " | 用来规划一个数据值 | |
小括号" () " | 分组使用 | |
中括号" [ ] " | 定义一个数组,用逗号分隔 | [ "k1":"v1" , "k2" , "kn" ] |
大括号" { } " | 多个键值对,用逗号分隔 | { "k1":"v1" , "k2":"v3" , "kn":"vn" } |
冒号 " : " | 一个键值对, | |
逗号 " , " | 分隔数据用的 |
注意: 空格是没有限制要求的,也不写都一样,空格不算一个分隔符号。
如果想让空格成为一个字符,要用\转义,也就是 "\ " 代表一串空格字符。
JSON由简到繁的演变过程
# 一个数据库,它里面由MySQL
{
"数据库" : "MySQL"
}
# 一个数据库,它里面由MySQL,MongoDB,Redis
{
"数据库" : [ "MySQL" , "MongoDB" , "Redis" ]
}
# 一个数据库,它里面由MySQL,MongoDB,Redis,而MySQL它详细信息为,关系型数据库,其市场上的主流软件为Mariadb,Oracle。
{
"数据库" : [
{ "MySQL" : "关系型数据库" , "市场软件" : [ "Mariadb" , "Oracle" ] },
"MongoDB" ,
{ "Redis" : { "非关系型数据库" : "NoSQL" } }
]
}
# 一个数据库,它里面由MySQL,MongoDB,Redis,而MySQL它详细信息为,关系型数据库,其市场上的主流软件为Mariadb,Oracle,其中,Mariadb是免费开源软件、Oracle是付费闭源软件,其开发公司为甲骨文
{
"数据库" : [
{
"MySQL" : "关系型数据库" ,
"市场软件" : [
{ "Mariadb" : "免费开源" },
{ "Oracle" : "付费闭源" , "公司" : "甲骨文" }
]
},
"MongoDB" ,
{ "Redis" : { "非关系型数据库" : "NoSQL" } }
]
}
其实原理比较简单,只不过可以反复嵌套,因此会生成很复杂的JSON文件
YAML数据格式
实质是: 用来表达数据序列的格式
基础语法:
1. YAML的结构通过空格来展示,不使用逗号!
2. 数组使用"- "来表示,注意是 减号空格
3. 键值对使用": "来表示,注意是 冒号空格
4. YAML使用一个固定的缩进风格表示数据层级结构关系
5. 一般每个缩进级别由两个以上空格组成
6. 使用 # 表示注释
注意:
不要使用tab,缩进是初学者容易出错的地方之一
同一层级缩进必须对齐
开头需要写 --- 表示文件开始
YAML由简到繁的演变过程
# 一个数据库,它里面由MySQL
"数据库": "MySQL"
# 一个数据库,它里面由MySQL,MongoDB,Redis
"数据库":
- "MySQL"
- "MongoDB"
- "Redis"
# 一个数据库,它里面由MySQL,MongoDB,Redis,而MySQL它详细信息为,关系型数据库,其市场上的主流软件为Mariadb,Oracle。
"数据库":
- "MySQL": "关系型数据库"
"市场软件":
- "Mariadb"
- "Oracle"
- "MongoDB"
- "Redis": "关系型数据库": "NoSQL"
# 一个数据库,它里面由MySQL,MongoDB,Redis,而MySQL它详细信息为,关系型数据库,其市场上的主流软件为Mariadb,Oracle,其中,Mariadb是免费开源软件、Oracle是付费闭源软件,其开发公司为甲骨文
"数据库":
- "MySQL": "关系型数据库"
"市场软件":
- "Mariadb": "免费开源"
- "Oracle": "付费闭源"
"公司" : "甲骨文"
- "MongoDB"
- "Redis":
"关系型数据库": "NoSQL"
JSON和YAML文件格式
这两个格式可以相互转换,JSON分隔符号比较多,{} [] , 等,而YAML内只有空格作为分隔符号,由换行缩进代表层级内容;不过呢,YAML及其注重空格,所以书写的时候需要格外谨慎,而JSON却不用担心空格问题。
两者间的具体的转换可以这么分
JSON | YAML | JSON示例 | YAML |
逗号分隔 | 回车并设置格式缩进相同 | {a,b} | a b |
大括号用来集合多种值 | 换行缩进统一即可 | {a:{k1:kk1},b:k2} | a: k1: kk1 b: k2 |
中括号代表数组 | 用- 键名写多列统一缩进即可 | [ a:[k1,k2],b:k2 ] | - a: - k1 - kk2 - b: k2 |
大致总结如上,在具体描述JSON和YAML格式的时候,有写例子,例子是等价关系,可以辅助理解
Jinja2
模版基本语法
1. 模板的表达式都是包含在分隔符"{{ }}"内的
2. 控制语句都是包含在分隔符"{% %}"内的
3. 模板支持注释,都是包含在分隔符"{# #}" 内,支持块注释
4. 调用变量{{变量名}}
5. 计算{{数值1 运算符号 数值2}},例如{{1*2}}
6. 可以使用过滤器进行修改,和Shell一样,使用符号 |
# 模块控制语句
{% if name == 'MySQL' %}
# 关系型数据库
{% for m in ["Mariadb","Oracle"] %}
{{do m}}
{% elif name == 'Mongodb' %}
# 非关系型数据库
{% elif name == 'Redis' %}
# 非关系型内存数据库
{% else %}
# 不可编写数据库
{% endif %}