Linux的数据文件类型——JSON、YAML、JinJa2

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 %}


 

你可能感兴趣的:(Linux,大型架构)