Java基础篇--YML简介

YML是什么

YAML(YAML Ain't Markup Language)是一种标记语言,通常以.yml或者.yaml为后缀的文件。它是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的。YAML可以用于如Java,C/C++, Ruby, Python, Perl, C#, PHP等编程语言。

YML的优点

  1. 易于人们阅读。
  2. 数据在编程语言之间是可移植的。
  3. 匹配敏捷语言的本机数据结构。
  4. 具有一致的模型来支持通用工具。
  5. 支持单程处理。
  6. 具有表现力和可扩展性。
  7. 易于实现和使用。

在Java中,可以通过支持YAML的库(如SnakeYAML,Jackson YAML等)将YAML文件解析为Java对象,或者将Java对象序列化为YAML文件。这对于配置文件,数据传输,对象序列化等场景非常有用。

YML语法

语法规则

YAML的基本语法规则如下:

  1. k: v 表示键值对关系,冒号后面必须有一个空格
  2. 使用空格的缩进表示层级关系,空格数目不重要,只要是左对齐的一列数据,都是同一个层级的
  3. 大小写敏感
  4. '#'表示注释
  5. 缩进时不允许使用Tab键,只允许使用空格。
  6. 松散表示,Java中对于驼峰命名法,可用原名或使用-代替驼峰,如Java中的lastName属性,在YML中使用lastName或 last-name都可正确映射。

键值关系

(以Java语言为例,其它语言类似)对于键与值主要是看能否表示以下内容。普通的值(数字、字符串、布尔)、日期、对象、数组、集合等。

普通的值

k: v:字面量直接写;

字符串默认不用加上单引号或者双绰号;

“”: 双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思

name: “zhangsan \n lisi”:输出;zhangsan 换行 lisi

‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据

age: 25
name: "John Doe"
is_alive: true

日期

date: 2023/08/30

对象(属性和值)、Map(键值对)

在下一行来写对象的属性和值的关系,注意缩进

address:  
  city: Anytown  
  state: CA  
  zip: 12345

行内写法:

address:{city: Anytown,state: CA,zip: 12345}

数组、list、set

用- 值表示数组中的一个元素

fruits:
  - apple
  - banana
  - orange

行内写法: 

fruits:{apple,banana,orange}

数组对象、list对象、set对象

peoples:
    - name: zhangsan
      age: 22
    - name: lisi
      age: 20
    - {name: wangwu,age: 18}

Java代码示例

public class Person {  
    private String name;  
    private int age;  
    private List hobbies;  
  
    public Person(String name, int age, List hobbies) {  
        this.name = name;  
        this.age = age;  
        this.hobbies = hobbies;  
    }  
  
    public String getName() {  
        return name;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public int getAge() {  
        return age;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
  
    public List getHobbies() {  
        return hobbies;  
    }  
  
    public void setHobbies(List hobbies) {  
        this.hobbies = hobbies;  
    }  
}

对应的YAML配置文件:

Person:  
  name: John Doe  
  age: 25  
  hobbies: [reading, sports, music]

在这个例子中,Java代码定义了一个名为Person的类,它有三个属性:name、age和hobbies。name是一个字符串,age是一个整数,hobbies是一个字符串列表。对应的YAML配置文件将Person对象的属性设置为指定的值。

文档块

在YAML中,文档块(document block)是一种将多个键值对组合在一起的数据结构。文档块以---(三个连字符)作为起始标记,以...(三个点)作为结束标记。在文档块内部,可以按照层级关系组织键值对。

以下是一个示例,展示了如何使用文档块:

---  
name: John Doe  
age: 25  
---  
name: Jane Doe  
age: 30

在这个例子中,有两个文档块,每个文档块包含一个键值对。第一个文档块的键是name,值为John Doe;第二个文档块的键是age,值为25。第二个文档块后面还有一个额外的---标记,表示文档块的结束。

文档块可以嵌套,以构建更复杂的数据结构。例如,可以将一个文档块嵌套在另一个文档块中:

person:  
  name: John Doe  
  age: 25  
  address:  
    street: 123 Main St.  
    city: Anytown  
    state: CA  
    zip: 12345

在这个例子中,person是一个文档块,包含三个键值对。其中,address是一个嵌套的文档块,包含四个键值对。通过这种方式,可以构建具有多个层级的数据结构。

实例:

server:  
  port: 8081  
spring:  
  profiles:  
    active: "prod"        # 激活对应的文档块
  
---  
server:  
  port: 8083  
spring:  
  profiles: "dev"         # 指定属于哪个环境
  
---  
server:  
  port: 8084  
spring:  
  profiles: "prod"        # 指定属于哪个环境

配置文件中有三个文档块(或称为“块”),每个块都包含有关服务器和Spring配置的信息。 

第一个文档块中,服务器端口被设置为8081,并且激活的Spring配置文件是“prod”。
第二个文档块中,服务器端口被设置为8083,并且指定的Spring配置文件属于“dev”环境。
第三个文档块中,服务器端口被设置为8084,并且指定的Spring配置文件属于“prod”环境。

你可能感兴趣的:(Java基础篇,java,开发语言)