YAML和JSON对比
1️⃣YAML是什么干什么的?
YAML 是You are my love 的缩写
YAML(YAML Ain’t Markup Language),YAML 是一种简洁的非标记语言
1、YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。
2、YAML是一种可读的文本的数据结构,它的设计目标是使人们容易读,程序容易处理。它类似XML,但是比XML简单。广泛用于配置文件,日志文件,跨语言数据共享,对象持久化,复杂的数据结构。
3、YAML 的配置文件后缀为 .yml,如:libai.yml 。
2️⃣JSON是什么干什么的?
JSON(JavaScript Object Notation):JavaScript 对象表示法
1、它不是一种语言,它是一种轻量级的文本数据交换格式。
2、它使用Javascript语法来描述数据对象,但它独立于JavaScript。JSON解析器和JSON库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
3、它本身是一串字符串,只是它是一串有固定格式的字符串。符合这个数据格式要求的字符串,我们称之为JSON。文件后缀名.json,libai.json.
简单来说JSON是一种数据格式,和数组作用一样,用于存储数据。
3️⃣JSON 语法规则
JSON 语法是 JavaScript 语法的子集。
JSON 语法衍生于 JavaScript 对象标记法语法
- 数据在名称/值对中
- 数据由逗号分隔
- 大括号保存对象
- 中括号保存数组
4️⃣YAML语法规则
YAML语法规则
- 大小写敏感
- 使用缩进表示层级关系
- 禁止使用tab缩进,只能使用空格键
- 缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级
- 使用#表示注释
- 字符串可以不用引号标注
5️⃣YAML、JSON语法对比
对比练习: YAML转化JSON
三种数据结构
1、map,散列表
使用冒号(:)表示键值对,同一缩进的所有键值对属于一个map
示例:
# YAML表示
age : 12
name : huang
# 对应的Json表示
{'age':12,'name':'huang'}
- 1
- 2
- 3
- 4
- 5
- 6
也可以将一个map写在一行:
# YAML表示
{age:12,name:huang}
# 对应的Json表示
{'age':12,'name':'huang'}
- 1
- 2
- 3
- 4
- 5
2、list,数组
使用连字符(-)表示:
# YAML表示
- a
- b
- 12
# 对应Json表示
['a','b',12]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
也可以写在一行:
# YAML表示
[a,b,c]
# 对应Json表示
[ 'a', 'b', 'c' ]
- 1
- 2
- 3
- 4
- 5
3、scalar,纯量
数据最小的单位,不可以再分割。
开发搞的少,这个纯量我也是第一次听见。
纯量是最基本的,不可再分的值,包括:
- 字符串
- 布尔值
- 整数
- 浮点数
- Null
- 时间
- 日期
纯量的基本使用
boolean:
- TRUE #true,True都可以
- FALSE #false,False都可以
float:
- 3.14
- 6.8523015e+5 #可以使用科学计数法
int:
- 123
- 0b1010_0111_0100_1010_1110 #二进制表示
null:
nodeName: 'node'
parent: ~ #使用~表示null
string:
- 哈哈
- 'Hello world' #可以使用双引号或者单引号包裹特殊字符
- newline
newline2 #字符串可以拆成多行,每一行会被转化成一个空格
date:
- 2021-06-20 #日期必须使用ISO 8601格式,即yyyy-MM-dd
datetime:
- 2021-06-20T15:02:31+08:00 #时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
数据结构嵌套
map和list的元素可以是另一个map或者list或者是纯量。由此出现4种常见的数据嵌套
1、map嵌套map
# YAML表示
websites:
YAML: yaml.org
Ruby: ruby-lang.org
Python: python.org
Perl: use.perl.org
# 对应Json表示
{ websites:
{ YAML: 'yaml.org',
Ruby: 'ruby-lang.org',
Python: 'python.org',
Perl: 'use.perl.org' } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
2、map嵌套list
# YAML表示
languages:
- Ruby
- Perl
- Python
- c
# 对应Json表示
{ languages: [ 'Ruby', 'Perl', 'Python', 'c' ] }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
3、list嵌套list
# YAML表示
-
- Ruby
- Perl
- Python
-
- c
- c++
- java
# 对应Json表示
```handlebars
[ [ 'Ruby', 'Perl', 'Python' ], [ 'c', 'c++', 'java' ] ]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
除此以外,还可以如下表示该结构
# 方法2
- - Ruby
- Perl
- Python
- - c
- c++
- java
# 方法3
- [Ruby,Perl,Python]
- [c,c++,java]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
4、list嵌套map
# YAML表示
-
id: 1
name: huang
-
id: 2
name: liao
# 对应Json表示
[ { id: 1, name: 'huang' }, { id: 2, name: 'liao' } ]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
6️⃣总结
要简洁同时功能强大,请用YAML, 要在不同语言中交换、共享数据,请用JSON。
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢未来很长,值得我们全力奔赴更美好的生活✨
文章来源: libai.blog.csdn.net,作者:新网工李白,版权归原作者所有,如需转载,请联系作者。
原文链接:libai.blog.csdn.net/article/details/118069380
- 点赞
- 收藏
- 关注作者
评论(0)