Flutter 之 YAML 数据序列文件的基础知识,一篇足矣!(一)

892 阅读5分钟

[》跳过拾光记忆]

拾光记忆

1-15.资产管理 Fam、手势触摸、枚举高阶用法、快速实现单选和多选、Diy 滑动轨道、水印功能、Image 高阶用法、矩阵16个参数含义、颜色差异、颜色填充、图像镜像、图像旋转、图像去色等功能的集合

简介: 该篇主要介绍15 篇文章含有功能的目录,可根据自己的需求选择对应的功能介绍查看。
推荐: ⭐️⭐️⭐️⭐️⭐️

16. Flutter 之 IImage 图像反色处理

简介: 该篇主要介绍 Flutter 之 IImage 库中如何实现图像反色功能以及实现原理的介绍。
推荐: ⭐️⭐️⭐️⭐️⭐️

17. Flutter 绘制路径 Path 的全部方法介绍,一篇足矣~(一)

18. Flutter 绘制路径 Path 的全部方法介绍,一篇足矣~(二)

19. Flutter 绘制路径 Path 的全部方法介绍,一篇足矣~(三)

简介: 该篇主要介绍 Flutter 之 图形(Canvas) 绘制路径 (Path)基础功能以及方法实现底层代码的解析。
推荐: ⭐️⭐️⭐️⭐️⭐️

20. Flutter 聊天气泡拉伸之点九图(NinePatchDrawable)应用总结

简介: 该篇主要介绍 Flutter 中聊天气泡的实现和图像点九图以及在使用图像拉伸实现气泡时遇到问题的分析和解决方法的总结。
推荐: ⭐️⭐️⭐️⭐️⭐️

[返回拾光记忆《]

一、YAML 介绍

YAML 是参考多种语言(C、Python、XML等)形成的一个可读性高,用来表达数据序列的格式。 目前已经有数种编程语言和脚本语言支持该格式。

二、YAML 优点

YAML(YAML Ain't Markup Language)是一种人类友好的数据序列化格式,具有以下几个优点:

  1. 易读性:YAML使用缩进和可识别的结构,使得文件内容易于阅读和理解。它不依赖于特定的标记符号或符号表,而是使用缩进和冒号表示结构关系,从而使文件具有良好的可读性和可编写性。
  2. 简洁性:相对于其他数据序列化格式(如JSON和XML),YAML语法更为简洁。它使用了更少的符号和标记,从而减少了额外的噪音,使文件看起来更加清晰和精简。
  3. 可扩展性:YAML支持包含自定义标签和类型的扩展。这意味着您可以根据自己的需求定义自己的数据类型,并在YAML文件中使用它们,从而提高了灵活性和可用性。
  4. 跨平台支持:YAML是一种与编程语言无关的格式,可以被广泛支持和解析。许多编程语言(如Python、Java、JavaScript等)都有相应的库和工具可以读取和处理YAML文件。
  5. 与人类交互友好:由于其易读性和可编写性,YAML常用于配置文件和人类可编辑的数据文件。它可以轻松与开发者和非技术人员之间进行交流和协作。

总之,YAML具有易读性、简洁性、可扩展性和跨平台支持等优点,使其成为一种广泛应用于配置文件和数据序列化的格式。

三、YAML 基础知识

1. 规则

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不能使用 TAB 键,只允许使用空格。

2. 后缀名

YAML 是以 .yaml为后缀命名文件的,例如 pubspec.yaml、analysis_options.yaml 等。

3. 注释

YAML 使用 # 进行注释的; 注释在 YAML 转换中不参与转换。如下所示:

# YAML 注释

4. 字符串

字符串平常并不使用引号,但必要的时候可以用双引号单引号框住。如下所示:

# 字符串1
字符串
# 字符串2
'字符串2'
# 字符串3
"字符串3"

5. 布尔值

YAML 的布尔值是 truefalse,如下:

a: true
b: false

6. 列表

YAML 使用中括号([]) 包括元素,元素之间使用逗号(,)分割来表示列表;如下所示:

# 列表
[1,2,3]

或者

name:
  - 小明
  - 大强
  - 张三

7. 字典(键值对)

YAML 使用 key: value 形式来表示字典结构,注意冒号后边要空格。如下所示:

age: 18
name: 黎明
address: 上海市

8. 基础数据

# 整数
age: 18
# 浮点数
weight: 62.5
# 布尔值
bag: true
loc: false
# 时间
time: 2023-09-06 10:23:44
# 日期 yyyy-MM-dd 格式
data: 2023-09-08
# Null
nl1: ~
nl2: null

9. 类型转换

YAML 使用两个感叹号(!!) 进行类型转换,如下所示:

# str -> int
age: !!int '12'
# str -> float
weight: !!float '12.3'
# int -> str
name: !!str 666
# float -> str
page: !!str 8.9

10. 瞄点标记

YAML 是使用& 进行瞄点标记的,如下 :

name: &LL 王敏
age: 20
tel: 1101101001

11. 别名引用

YAML 是使用* 进行别名引用的,如下 :

name: &LL 王敏
age: 20
tel: 1101101001
do: *LL # 王敏

注意: 引用后面不能在跟其他字符,例如:*LLc、*LL c、*LL \c 等都是错误的。

12. 复杂键映射(? )

YAML中问号和空格(“?”)表示复杂的映射键。如下:

? - Detroit Tigers
  - Chicago cubs
:
  - 2001-07-23

? [ New York Yankees,
    Atlanta Braves ]
: [ 2001-07-02, 2001-08-12,
    2001-08-14 ]

13. 合并数据(<<:)

YAML 中是使用 <<: 来合并数据的,如下:

defaults: &defaults
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  <<: *defaults

test:
  database: myapp_test
  <<: *defaults

四、YAML 应用

下面将进行 YAML 转化为 JSON 格式为例来介绍使用,如下:

1. 字符串

  • 下面是字符串的基础应用,如下: image.png

  • 如果字符串中出现特殊字符(@$*&...)我们需要使用 引号将其包括,如下所示:

    image.png

  • 字符串可以拆成多行,每一行就是一个空格,必须保持层级一致。如下:

    image.png

2. 数组(列表)

  • 下面是列表的两种形式,可根据需求选择。如下:

    image.png

  • 我们也可以进行数据嵌套,如下:

    image.png

  • YAML 文件中只包含一个列表的写法, 如下:

    image.png

  • 例子集合

    • 数组嵌套字典

      image.png

    • 数组嵌套数组

      image.png

3. 字典(键值对)

  • 下面是键值对的基础应用,如下:

    image.png

  • 下面是字典的嵌套情况,如下:

    image.png

4. 瞄点标记和引用

下面是YAML的瞄点标记和引用的实例,如下:

image.png

5. 复杂键的映射

下面是YAML 复杂键的映射实例,如下:

image.png

6.合并数据

下面是YAML 瞄点标记、合并数据、引用的实例,如下:

image.png

五、鼓励与支持

上面就是 YAML 的一些基础知识点,这些只是它相关知识点的冰山一角。有这些知识点在 Flutter 中的一些 YAML 文件我们基本都可以看懂。下篇文章我们将会介绍 YAMLFlutter 中的读取以及修改和 pubspec.yaml 文件分析。如果你感觉本篇文章还可以,请你留下你的关注、收藏、评论以及转发。这都是对我的鼓励与认可。下面是便捷功能以及仓库入口:

  1. YAML 在线转 JSON 的便捷地址 YAML -> JSON
  2. 本篇文章的演示代码仓库地址YAML 基础知识