Python VS Java:处理 yaml 数据谁更简单呢 -99.99% 的人都收藏了

发布于 更新于
本文目录
  1. 一、思考❓❔
  2. 1.什么是yaml?
  3. 2.Python和Java中处理yaml的常用模块有哪些呢?
  4. 二、案例演练??
  5. 1.Python中安装pyyaml
  6. 2.Java中从Maven仓库加载SnakeYAML
  7. 3.基本用法
  8. 4.解析列表(List)数据
  9. 三、总结??

技术文章Linux与数据库

与XML、json一样均为数据格式(非数据类型)

一、思考❓❔

1.什么是yaml?

image.png
  • 与XML、json一样均为数据格式(非数据类型)

  • 相比XML和json,yaml更简洁,传输、承载数据的效率更高

  • 跨语言

    • 所有编程语言(java、python、php等)都支持

  • 跨平台

    • 所有平台都支持(Windows、linux、Mac等)

  • 应用非常广泛


2.Python和Java中处理yaml的常用模块有哪些呢?

image.png
  • 在Python中

    • pyyaml:使用更广泛

    • ruamel.yaml:是pyyaml的衍生版

  • 在Java中

    • Jackson Dataformat YAML

    • SnakeYAML:使用更广泛



二、案例演练??

image.png

1.Python中安装pyyaml

  • 使用豆瓣pypi源来安装(推荐)

    • pip install -i https://pypi.douban.com/simple PyYAML


2.Java中从Maven仓库加载SnakeYAML

在pom.xml中添加如下内容:

<!-- https://mvnrepository.com/artifact/org.yaml/snakeyaml -->
<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
    <version>1.25</version>
</dependency>


3.基本用法

  • Python中在项目根目录下创建user_info.yaml文件,Java中在src\test\resources中创建

    # yaml数据缩进要一致,往往空两个字符
    users:
      name: "可优"
      age: 18
      gender: "男"
    
    other:
      hobby: "装大佬"
      lover: "柠檬小姐姐"
  • python代码进行解析(解析为嵌套字典的字典)

    # 1. 导入模块
    import yaml
    
    # 2. 打开yaml文件,并加载
    with open("user_info.yaml", encoding="utf-8") as file:
        data = yaml.full_load(file)
        print(data)

    打印结果为:

    {'users': {'name': '可优', 'age': 18, 'gender': '男'}, 'other': {'hobby': '装大佬', 'lover': '柠檬小姐姐'}}
  • java代码进行解析(解析为嵌套HashMap的HashMap)

    // 1. 导入Yaml包
    import org.yaml.snakeyaml.Yaml;
    import java.util.HashMap;
    
    public class HandleYamlUtils {
        public static void main(String[] args) {
            // 2. 创建Yaml对象
            Yaml yaml = new Yaml();
    
            // 3. 加载yaml文件
            // 使用HashMap来接收
            HashMap<String, HashMap<String, Object>> hashMap = yaml.load(HandleYamlUtils.class.getResourceAsStream("/user_info.yaml"));
            System.out.println(hashMap);
        }
    
    }
    

    打印结果为:

    {users={name=可优, age=18, gender=男}, other={hobby=装大佬, lover=柠檬小姐姐}}


4.解析列表(List)数据

创建user_info.yaml文件

# - 代表解析为列表数据
-
  name: "可优"
  age: 18
  gender: "男"
  other:
    hobby: "装大佬"
    lover: "柠檬小姐姐"

-
  name: "柠檬小姐姐"
  age: 17
  gender: "女"
  other:
    hobby: "学软件测试"
    lover: "可优"
  • Python处理方式不变,java需要使用List来接收

// 1. 导入Yaml包
import org.yaml.snakeyaml.Yaml;
import java.util.HashMap;

public class HandleYamlUtils {
    public static void main(String[] args) {
        // 2. 创建Yaml对象
        Yaml yaml = new Yaml();

        // 3. 加载yaml文件
        // 需要使用List来接收
        List<HashMap<String, Object>> hashMapList = yaml.load(HandleYamlUtils.class.getResourceAsStream("/user_info.yaml"));

    }

}
  • 打印结果为:

    [{name=可优, age=18, gender=男, other={hobby=装大佬, lover=柠檬小姐姐}}, {name=柠檬小姐姐, age=17, gender=女, other={hobby=学软件测试, lover=可优}}]



三、总结??

image.png
  • 本文介绍了使用Python和Java分别处理同一个yamal文件,很明显使用Python来处理更简单,而Java执行效率更高

  • yaml文件读取效率非常高,适合存放测试数据

  • yaml在自动化测试和测试开发中都有广泛应用

  • 本文为可优原创,如有不足,请多多指教

image.png

来源:testingpai

继续阅读