什么是 YAML?了解 YAML 语法与最佳实践

什么是 YAML

YAML 是 "YAML Ain't Markup Language" 的缩写,这是一种用于数据序列化的基于文本的标记语言。

YAML 的用途

YAML (YAML Ain't Markup Language) 是一种人类可读的数据序列化格式,主要用于以下目的:

  • 作为配置文件格式:  许多编程语言和框架采用 YAML 作为配置文件的格式。

  • 作为应用程序之间的数据交换格式:  YAML 常和 JSON 一起被用作数据交换格式。

  • 描述结构化数据:  YAML 可用于描述文档、产品信息、各种元数据等。

    YAML 是一个重要的数据序列化格式,广泛应用于各种场景,如编程语言中的数据结构序列化/反序列化、容器编排工具的清单文件描述、各类配置文件定义等。YAML 是 API 文档的标准格式之一,这是 YAML 的主要应用场景之一。

YAML 的特点

作为一种方便人类阅读和书写的语言,YAML 具有以下显著特点:

  • 数据可以以人类易读易写的格式进行书写。
  • 比 JSON 更简洁的语法。
  • 空白字符(空格和制表符)具有特殊意义,因此缩进很重要。
  • 能够包含注释。
  • 能够表示数据类型,例如字符串、数字、数组和对象。

由于这些特点,使用 YAML 进行书写非常方便。在接下来的部分,我们将介绍如何编写 YAML 文件,以便不太熟悉的人更好地掌握。

如何编写 YAML

在 YAML 中,数据通常表示为 键值对。多个键值对可以通过缩进来分隔。以下是编写 YAML 的基本步骤。

使用键值对

在 YAML 中,数据主要通过键值对来表示,这样的键值对以冒号 (:) 分隔。

key: value

编写数据层级

当存在数据层级时,使用缩进(通常为两个空格)来继续描述下级对象。

parent:child: value

编写列表和条目

数组使用短划线(-)来书写。如果有多个条目,每个条目必须以短划线开头。

fruits:- apple- orange- banana

编写对象

对象也使用键值对,但需要使用缩进。

user:name: Taroage: 23

编写注释

要在 YAML 中编写注释,使用井号 (#)。注释从井号开始,延续到该行的末尾。

# 这是一个注释# 你还可以在值旁边写注释
key: value  # 注释# 注释可以跨越多行
long_commented_key: |此值在注释后继续。# 嵌套结构(如 JSON)也可以有注释
parent:# 子元素的注释child_key: child_value# 在列表中也可以使用注释
shopping_list:- milk  # 2 升- eggs  # 10 个- bread

注释规则包括:

  • 从 # 到行末的部分被视为注释。
  • 注释可以放在值的前面或后面。
  • 可以在标量值的上方或下方编写注释。
  • 注释可以跨越多行。

通过添加注释,可以提高文件的清晰度和可读性,特别是对于配置文件或文档化内容。

编写多行字符串

要在 YAML 文件中编写多行字符串,使用竖线 (|) 包围内容。

text: |XXXXYYYY

遵循这些规则,您可以轻松编写 YAML 文件。与 JSON 相比,主要区别在于缩进和空白字符在 YAML 中是有意义的。因此,如果您熟悉 JSON,在使用 YAML 进行编写时需要特别注意这些差异。

YAML 文件示例

以下是一个完整的 YAML 文件示例,这有助于您更好地理解如何编写 YAML 文件。

# 样本 YAML文件# 字典(映射)
book:title: Introduction to YAMLauthor:# 嵌套的映射name: Yamada Taroage: 38year: 2023pages: 120chapters:# 列表- Introduction- Basics- Advanced Techniques# 列表
fruits:- apple- orange- banana# 字符串
description: |YAML 是一个人类友好的数据序列化标准。它通常用于配置文件和 API 中。# 数值
price: 9.99# 布尔值
published: true# 空值
score: ~

这个 YAML 文件表示如下数据结构:

以 book: 开头的块定义了一个字典(映射)。

  • book 是键,其值为字典数据。
  • titleauthoryearpages 和 chapters 是键。
  • author 的值是一个嵌套的字典结构。
  • chapters 的值是一个列表结构。

以 fruits: 开头的块定义了一个列表。

  • fruits 是键,值是列表。
  • - apple- orange 和 - banana 表示列表中的条目。

description: 键显示了一个多行字符串。

price: 定义了一个数值。

published: 定义了一个布尔值。

score: 使用 ~ 表示一个空值。

因此,YAML 允许灵活定义各种数据类型,并容易表示嵌套结构。

导入使用 YAML

Apifox 支持以 YAML 格式导入 OpenAPI 3、Swagger 1、2 和 3 API,因此您可以完全解析 YAML 格式的任何 API,并将 API 的数据完全导入到 Apifox 中进行测试。

首先可以打开项目设置,点击“导入数据”,选择 “OpenAPI/Swagger” 并将 YAML 文件拖到 Apifox 中。即可导入成功。

img_v3_02ck_91a49228-e70c-4075-920d-44a7bb29131g.jpg

总结

YAML 是一种人类可读的数据结构化格式,广泛应用于 Web 应用开发中,如配置文件的编写和 API 文档的创建等。尽管其语法相对简单,但在缩进和注释处理上有独特的规则,需要特别注意。适当使用 YAML 可以提高开发效率和文档质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++:C++入门基础|命名空间|输入输出

欢迎来到HarperLee的学习笔记! 博主主页传送门: HarperLee的博客主页! 想要一起进步的uu来后台哦! 一、什么是C? 在此之前,我们所学习的C语言是一种结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题&a…

25.无源蜂鸣器驱动设计

相对于有源蜂鸣器,无源蜂鸣器的成本更低,声音频率可控。而有源蜂鸣器因其内部 自带振荡源,只要加上适当的直流电源即可发声,程序控制较为方便。 (1)设计定义:设计一个无源蜂鸣器的驱动程序&…

二阶线性微分方程

假设一个质量 m 连接在弹簧和阻尼器上,系统受到外力 F(t) 的作用。设 x(t) 为质量的位移,系统的运动方程可以用牛顿第二定律表示为: 这是一个典型的二阶线性非齐次微分方程:其中: m 是质量(Fma&#xff09…

调度的艺术:Eureka在分布式资源调度中的妙用

调度的艺术:Eureka在分布式资源调度中的妙用 引言 在微服务架构中,服务的分布式资源调度对于确保系统高效运行至关重要。Eureka作为Netflix开源的服务发现框架,虽然本身不直接提供资源调度功能,但可以与其他工具和策略结合使用&…

蓝桥杯备赛攻略(怒刷5个月拿省一)

十五届蓝桥杯结束,up也在这次比赛中获得了不错的成绩,为了帮助大家在25年蓝桥杯上获得好的成绩,我将根据今年的经验写一份蓝桥杯的备赛攻略,希望能帮到大家。 参赛准备 蓝桥杯算法赛必须指定一个编程语言赛道报名,也就…

【vueUse库Watch模块各函数简介及使用方法--下篇】

vueUse库是一个专门为Vue打造的工具库,提供了丰富的功能,包括监听页面元素的各种行为以及调用浏览器提供的各种能力等。其中的Browser模块包含了一些实用的函数,以下是这些函数的简介和使用方法: vueUse库Sensors模块各函数简介及使用方法 vueUseWatch函数1. watchImmedia…

Access系统开发必备技巧:轻松调整应用程序标题,提升用户体验!

Hi~ 大家好久不见呀! 一直忙,但不知道在忙啥,好多事情都落下了,ERP的文章最近也没有时间更新,接下去我还在考虑弄个直播,不知道大家有没有什么想了解的,大家给我留言,直播的时候给…

aspose实现水印功能

文章目录 aspose给pdf添加水印aspose给word添加水印aspose给excel添加水印aspose给ppt添加水印aspose给图片添加水印 其他官网文档word水印(java)文档 客户要做水印功能,要求支持pdf,word,excel,ppt,图片等。 那么用as…

vue学习day02-Vue指令-v-html、v-show与v-if、v-else与v-else-if、v-on、v-bind、v-for、v-model

6、Vue指令 指令:带有v-前缀的特殊标签属性 (1)v-html 作用:设置元素的innerHTML 语法:v-html“表达式” 示例: 提供一个地址,这里是百度的地址,通过v-html渲染 结果&#xff…

怎么将图片旋转30度?旋转图片的几种方法推荐

怎么将图片旋转30度?在创作过程中,我们常常需要处理图片的镜像效果,确保其视觉效果和构图都达到最佳状态。镜像效果的合理运用不仅可以解决视觉单调的问题,还能在艺术作品中吸引观者的注意力。此外,镜像可以有效地调整…

大数据之Hadoop平台的搭建

实验环境 三台虚拟机 master slave1 slave2 服务器集群单节点,机器最低配置:双核 CPU、8GB 内存、100G 硬盘运行环境CentOS 7.4服务和组件服务和组件根据实验需求安装 1实验过程 1.1实验任务一:配置 Linux 系统基础环境 1.1.1步骤一&a…

YModem在Android上的实现

(一)参考文献 【安卓相关】蓝牙基于Ymodem协议发送bin文件,对硬件设备进行升级。 - 简书当Android BLE遇上YModem - 简书 (二)收发机制 基于我们具体的需求,在原有的基础上加了一下前后的处理。 * MY YMO…

在Java中,创建一个实现了Callable接口的类可以提供强大的灵活性,特别是当你需要在多线程环境中执行任务并获取返回结果时。

在Java中,创建一个实现了Callable接口的类可以提供强大的灵活性,特别是当你需要在多线程环境中执行任务并获取返回结果时。以下是一个简单的案例,演示了如何创建一个实现了Callable接口的类,并在线程池中执行它。 首先&#xff0…

Cesium版本升级webgl问题,glsl代码关键字修改

简介 Cesium 从1.102.0 开始,Cesium 默认使用 WebGL2 上下文。一些webgl特效代码在webgl1中支持,但是在版本升级后,运行会报各种glsl代码错误。现在有两种解决方案。详细办法描述如下所示。 1、修改配置使用WebGL1 地球初始化配置如下&…

wordpress外贸建站公司案例英文模板

Indirect Trade WP外贸网站模板 WordPress Indirect Trade外贸网站模板,建外贸独立站用wordpress模板,快速搭建十分便捷。 衣物清洁wordpress独立站模板 洗衣粉、洗衣液、衣物柔顺剂、干洗剂、衣领净、洗衣皂等衣物清洁wordpress独立站模板。 家具wordpr…

深度学习:从数据采集到模型测试的全面指南

摘要 随着人工智能和大数据技术的迅猛发展,深度学习已成为解决复杂问题的有力工具。然而,从项目启动到模型部署,包含了数据处理和模型研发的多个环节,每个环节的细致和严谨性直接决定了最终模型的性能和可靠性。本论文详细探讨了…

LLaMA Pro:具有块扩展的渐进式 LLaMA[论文翻译]增量预训练 扩展transformer块

LLaMA Pro:具有块扩展的渐进式 LLaMA https://arxiv.org/abs/2401.02415 Chengyue Wu1,2   Yukang Gan2   Yixiao Ge2 Zeyu Lu3   Jiahao Wang1   Ye Feng4   Ying Shan2   Ping Luo1 1The University of Hong Kong   2ARC Lab, Tencent PCG 3Shang…

可以拖拽的富文本编辑器(VueDragResize,quill-editor)

该功能实现一个帮助文档的展示和编辑功能,默认进去只能查看帮助文档的内容,点击编辑可以进行富文本编辑器的编辑功能。 出现的问题1.如何隐藏富文本编辑的工具栏并且禁止编辑 //隐藏工具栏this.toolbar this.$refs.myTextEditor.quill.getModule(toolb…

【算法】代码随想录之数组(更新中)

文章目录 前言 一、二分查找法(LeetCode--704) 二、移除元素(LeetCode--27) 前言 跟随代码随想录,学习数组相关的算法题目,记录学习过程中的tips。 一、二分查找法(LeetCode--704&#xff0…

Spring系统学习 - AOP之基于注解的AOP和XML的AOP

上一篇我们围绕了AOP中代理模式的使用,这篇我们将主要围绕AOP的相关术语介绍,以及重点围绕基于注解的AOP进行相关知识的概述和使用说明。 AOP的相关术语 切面(Aspect):切面是一个模块化的横切关注点,它包含…