Net程序员讲JavaSpringBoot系列:Yml与JSON、XML的区别

XML


XML

什么是XML?

<?xml version="1.0" encoding="utf-8" ?>
<note>
    <name>老程的自习社</name>
    <weburl>https://www.toutiao.com/c/user/70114154003/#mid=1659479667793931</weburl>
</note>
  • XML是被设计用来传输和存储数据的;
  • XML是可扩展标记语言(Extensible Markup Language)
  • XML使用标记语言,类似HMTL,但又所不同,HTML是用来现实数据的
  • XML的设计宗旨是传输数据,而非现实数据
  • XML的标签没有被预定义,意味着,可以自由发挥
  • XML是一种更具有自我描述性;
  • XML是W3C的推荐标准

用途

  • XML把数据与HMTL分离
  • XML简化数据共享
  • XML简化数据共享
  • XML跨平台
  • XML是数据更有应,因为它独立于硬件、软件以及应用程序,通过XML,数据可以提供各种阅读设备使用(平板、语音设备、新闻阅读器)等等

缺点

  • 比专业的DB软件占用更多的空间
  • 有点复杂,解析要写N多的方法
  • 缺少安全保护,数据容易被污染
  • 格式转换的问题



Json


JSON

Json(JavaScript Object Notation)一种轻量级的数据交换格式,已与编写和阅读,也容易及其解析,随着前后端的分离技术普遍的应用,JSON的作用越来越大;

{
    "data":{
        "name":"老程的自习社",
        "url":"https://www.toutiao.com/c/user/70114154003/#mid=1659479667793931"
    }
}


Json层级

特性

  • 键值对的无序集合
  • 值得有序列表



YML

YAML (YAML Ain't a Markup Language)不是一种标记语言,通常以.yml为后缀的文件,一种专门用来写配置文件的语言。可用于如: Java,C/C++, Ruby, Python, Perl, C#, PHP等。

优点

  • 易于阅读,和JSON,XML一样;
  • YML数据在编程语言之间是可以移植的,JSON和XML也一样;
  • YML支持单程处理;
  • YML具有表现力和可扩展性;
toudiao:
  name: 老程的自习社
  url: https://www.toutiao.com/c/user/70114154003/#mid=1659479667793931


yml的约定

约定

  • K:V(key:value)键值对, 冒号后面必须有一个空格
  • 使用空格的缩进标识层级的管理,一定要左对齐,空格数目不重要
  • 大小写明显
  • 松散表示,驼峰和其他的在YML中都是可以自动映射,Laocheng,laocheng,lao-cheng都是可以滴

键值关系:通俗点,int、string、bool 、datetime,对象、array、list、set....都是可以滴

字符串转义符:

“\N”:\N输出成换行

‘\N’:\N输出\N’

N种写法:行内写法,正规写法,不多介绍,百度太多了


在JAVASpringBoot中溜一下代码

在idea中以.YML结尾的文件,输入


toudiao:
  name: 老程的自习社
  url: https://www.toutiao.com/c/user/70114154003/#mid=1659479667793931

在pom.xml中引入

 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-configuration-processor</artifactId>
     <optional>true</optional>
 </dependency>

创建laocheng.class

package com.kevin.demo;

import org.springframework.boot.context.properties.ConfigurationProperties;
/*将配置文件的每一个属性的值,映射到组件中
* @ConfigurationProperties 告诉springboot将本类中的所有属性和配置文件中的相关配置进行绑定
* @prefix标注
 */
@ConfigurationProperties(prefix="toudiao")
public class laocheng {


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    private  String name;
    private  String url;

    @Override
    public String toString() {
        return "laocheng{" +
                "name='" + name + '\'' +
                ", url='" + url + '\'' +
                '}';
    }

}

导入测试依赖包

	    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
   			<groupId>junit</groupId>
  			<artifactId>junit</artifactId>
   			<version>4.10</version>
   			<!--<scope>test</scope>-->
		</dependency>

启动,输出结果

举报
评论 0