example1

yaml中数组元素以-开头, 每个元素前面都有-. json数组用[ ]围起来
yaml格式

  - name
  - name

json格式

[
  "name",
  "name"
]

example2

数组中包含对象的写法.yaml的对象无需{}

yaml格式

- name: jobE
- name: jobD

json格式

[
    {
        "name":"jobE"
    },
    {
        "name":"jobD"
    }
]

example3

对象可以有多个键值对,既然是对象,当然可以有很多属性与值,就是很多组键值对.yaml对象不同键值对之间无需逗号分割. 当然,在这里对象是匿名的,因为没有给对象起名字.

yaml

- name: jobE
 type: command
- name: jobD
 type: command

JSON 对象被花括号 {} 包围。
JSON 对象以键/值对书写。
键必须是字符串,值必须是有效的 JSON 数据类型(字符串、数字、对象、数组、布尔或 null)。
键和值由冒号分隔。
每个键/值对由逗号分隔
json

[
    {
        "name":"jobE",
        "type":"command"
    },
    {
        "name":"jobD",
        "type":"command"
    }
]

example4

如果对象的值还是一个键值对,那么就会导致嵌套.
yaml

- name: jobE
 type: command
 config:
      command: echo "This is job E"
- name: jobD
 type: command
 config:
      command: echo "This is job E"

json
一个 JSON 对象中的值可以是另一个 JSON 对象。

[
    {
        "name":"jobE",
        "type":"command",
        "config":{
            "command":"echo \"This is job E\""
        }
    },
    {
        "name":"jobD",
        "type":"command",
        "config":{
            "command":"echo \"This is job E\""
        }
    }
]

example5 对象的值可以是数组

- name: jobE
 type: command
 config:
      command: echo "This is job E"
 dependsOn: 
      - jobD
- name: jobD
 type: command
 config:
      command: echo "This is job E"
dependsOn:
      - jobA
      - jobB
      - jobC

json
数组可以是对象属性的值,一个对象的属性可能不是单一的,有多个值也很正常.

{
    "0":{
        "name":"jobE",
        "type":"command",
        "config":{
            "command":"echo \"This is job E\""
        },
        "dependsOn":[
            "jobD"
        ]
    },
    "1":{
        "name":"jobD",
        "type":"command",
        "config":{
            "command":"echo \"This is job E\""
        }
    },
    "dependsOn":[
        "jobA",
        "jobB",
        "jobC"
    ]
}

example6 可以是多层嵌套

yaml
nodes一个对象的key.然后其值是个数组.数组中有2个匿名对象,每个匿名对象又有4个键值对.

nodes:
  - name: jobE
    type: command
    config:
      command: echo "This is job E"
    # jobE depends on jobD
    dependsOn: 
      - jobD
    
  - name: jobD
    type: command
    config:
      command: echo "This is job D"
    # jobD depends on jobA、jobB、jobC
    dependsOn:
      - jobA
      - jobB
      - jobC

json

{
    "nodes":[
        {
            "name":"jobE",
            "type":"command",
            "config":{
                "command":"echo \"This is job E\""
            },
            "dependsOn":[
                "jobD"
            ]
        },
        {
            "name":"jobD",
            "type":"command",
            "config":{
                "command":"echo \"This is job D\""
            },
            "dependsOn":[
                "jobA",
                "jobB",
                "jobC"
            ]
        }
    ]
}

总结

  • yaml靠缩进表示层级关系
  • json数组用[],对象用{}
  • yaml和json可以相互转换
  • 阅读起来yaml比json容易一些
GitHub 加速计划 / js / json
18
5
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:2 个月前 )
960b763e 5 个月前
8c391e04 8 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐