【文件格式】.yml文件_YAML格式文件_JSON文件

.yml文件

.yml 文件是 YAML(YAML Ain’t Markup Language)格式的一种文件扩展名。YAML 是一种用于数据序列化的语言,通常用于配置文件、数据交换、日志记录等场景。它以可读性高、简洁的格式为特点,非常适合用于人类阅读和编写。YAML 通常被用于配置文件(例如,Docker 配置、CI/CD 配置等),因为它的结构清晰且易于编辑。

YAML 文件的一些特点:
层次结构:通过缩进来表示数据的层级结构,通常使用两个空格(或四个空格)来表示一个层级。不会使用花括号 {} 或方括号 [] 来表示层次。
键值对:使用 key: value 来表示数据项,key 是数据的名称,value 是对应的值。:冒号后面必须有一个空格
数组:通过 - 来表示一个数组项。
注释:使用 # 来添加注释,注释不会被解析。
支持多种数据类型:支持字符串、整数、浮点数、布尔值、日期等数据类型。

# 这是一个YAML文件的示例 
#键值对
name: John Doe
age: 30
is_active: true
address:#嵌套对象,里面是三个键值对
  street: 123 Main St
  city: Anytown
  country: USA
friends:#数组friends 里面有3个元素
  - Jane
  - Bob
  - Alice

.json文件

JSON 文件格式(JavaScript Object Notation)
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有 键值对结构、可读性强、易解析、跨语言支持 的特点,广泛用于 Web 开发、API 交互、配置文件等。
比XML更小、更快、更易解析。

  • JSON 的基本格式
    JSON 由 对象(Object) 和 数组(Array) 组成:
    对象(Object):使用 大括号 {},包含 key: value 键值对。
    数组(Array):使用 方括号 [],包含多个值。
{
  "name": "Alice",
  "age": 25,
  "isStudent": false,
  "skills": ["JavaScript", "Python", "C++"],
  "address": {
    "city": "New York",
    "zip": "10001"
  }
}
  • 特点:
    字符串 必须用 双引号 "(不能用单引号 ')。
    JSON中不能注释
    JSON本质是一个字符串,将其通过JS解析后转换成JS对象或数组。
    键(Key) 必须是 字符串,不能省略引号。
    值(Value) 可以是 字符串、数字、布尔值、对象、数组、null【6种】。
    数字 “age”: 25 不能有前导 0,如 012 ❌
    数组 “skills”: [“JS”, “Python”] 可包含多种数据类型
    对象 “address”: {“city”: “NY”} 可嵌套
  • JSON 字符串转 JavaScript 对象【反序列化】
const jsonString = '{"name": "Alice", "age": 25}';
const obj = JSON.parse(jsonString);
console.log(obj.name); // 输出: Alice

//JSON.parse()还可以接收一个函数,用来转换解析出的属性:
var obj = JSON.parse('{"name":"小明","age":14}', function (key, value) {
    if (key === 'name') {
        return value + '同学';
    }
    return value;
});
  • JavaScript 对象转 JSON 字符串【序列化】
JSON.stringify(value[, replacer [, space]])

const obj = { name: "Alice", age: 25 };
const jsonString = JSON.stringify(obj);
console.log(jsonString); // 输出: '{"name":"Alice","age":25}'


//要输出得好看一些,可以加上参数,按缩进输出
JSON.stringify(xiaoming, null, '  ');

//第二个参数用于控制如何筛选对象的键值,如果我们只想输出指定的属性,可以传入Array:
JSON.stringify(xiaoming, ['name', 'skills'], '  ');

//还可以传入一个函数,这样对象的每个键值对都会被函数先处理:
function convert(key, value) {
    if (typeof value === 'string') {
        return value.toUpperCase();
    }
    return value;
}
JSON.stringify(xiaoming, convert, '  ');
### Spring Boot `application.yml`与`application.properties`的区别及使用场景 #### 文件格式差异 `application.yml` 使用 YAML (YAML Ain't Markup Language) 格式,而 `application.properties` 则遵循 Java 属性文件的传统键值对结构。YAML 提供更简洁的语法表示层次化数据,并支持列表和映射等复杂的数据结构[^3]。 #### 加载顺序与优先级 两者均放置于项目的 `src/main/resources` 路径下作为主要配置资源。然而,在某些特定条件下加载顺序有所不同;通常来说,当存在多个同名配置文件时(例如不同环境下的配置),`.yml` 和 `.properties` 文件会按照一定规则决定哪个生效。值得注意的是,关于两者的优先级并没有绝对的说法,更多取决于具体的应用上下文以及开发者的选择[^2]。 #### 功能特性对比 - **易读性和维护性**:由于其缩进敏感的特点,`application.yml` 更易于表达嵌套对象关系,使得复杂的配置看起来更为直观清晰。 - **灵活性**:虽然二者都能很好地完成基本设置任务,但在处理多层嵌入式的参数定义方面,YAML 显示出了更大的优势。比如数据库连接池的相关设定可以通过较少的文字量实现相同的效果[^4]。 ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC username: root password: secret ``` 相对应地,在 `application.properties` 中则需采用点分隔符的形式书写: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=secret ``` #### 实际应用中的选择依据 对于简单的项目或是团队成员普遍熟悉 `.properties` 文件的情况下,默认继续沿用可能是最稳妥的做法。而对于大型企业级应用或者是那些偏好 JSON 或 XML 类型配置风格的人来说,则可以选择更具表现力也更容易管理的 YML 方案[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七灵微

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值