关闭

Java读取/写入Yaml配置文件

标签: javayaml结构读取yaml解析yamljyaml解析
16279人阅读 评论(0) 收藏 举报
分类:

JYaml文件流读取/写入Yaml配置文件

yaml配置文件格式规范:- 表示sequence(list列表结构),: 表示map键值对
#以下是示例yaml结构

age: 23
children: 
  - 
    age: 8
    name: mary1
    sex: man
  - 
    age: 9
    name: simon2
    sex: fatel
name: simon.zhang
sex: man

1.准备工作,创建Persion实体类

package com.yaml.entity;

import java.util.List;

/**
 * Created by simon on 16-6-12.
 */
public class Person {
    private String name;
    private int age;
    private String Sex;
    private List<Person> children;

    //省略 getter and setter method.....
}

2.实现读取/写入yaml配置文件

package com.yaml;

import com.yaml.entity.Person;
import org.ho.yaml.Yaml;
import org.junit.Test;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;

/**
 * Hello world!
 */
public class App {

    //写入yaml配置文件
    @Test
    public  void write() {
        /* Initialize data. */
        Person father = new Person();
        father.setName("simon.zhang");
        father.setAge(23);
        father.setSex("man");
        List<Person> children=new ArrayList<Person>();
        for (int i = 8; i < 10; i++) {
            Person child = new Person();
            if (i % 2 == 0) {
                child.setSex("man");
                child.setName("mary" + (i - 7));
            } else {
                child.setSex("fatel");
                child.setName("simon" + (i - 7));
            }
            child.setAge(i);
            children.add(child);
        }
        father.setChildren(children);
        /* Export data to a YAML file. */
        File dumpFile = new File(System.getProperty("user.dir") + "/test/src/main/conf/testYaml.yaml");

        try {
            Yaml.dump(father, dumpFile);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    //读取yaml配置文件
    @Test
    public  void  read() throws FileNotFoundException {
        File dumpFile=new File(System.getProperty("user.dir") + "/test/src/main/conf/testYaml.yaml");
        Person father = (Person) Yaml.loadType(dumpFile, Person.class);
        StringBuilder stringBuilder=new StringBuilder();
        stringBuilder.append(father.getName())
                .append("\t")
                .append(father.getSex())
                .append("\t")
                .append(father.getAge())
                .append("\t")
                .append(father.getChildren().size());
        System.out.println(stringBuilder.toString());

    }
}
Map结构的yaml文件
JDBC.driver: com.mysql.jdbc.Driver
JDBC.url: "jdbc:mysql://127.0.0.1:3306/shipping_local?autoReconnect=true&autoReconnectForPools=true&useUnicode=true&characterEncoding=utf8"
JDBC.username: shipping
JDBC.password: shipping
JDBC.autoCommit: false

读取Map结构

//读取yaml配置文件Map结构
    @Test
    public  void  read2() throws FileNotFoundException {
        File dumpFile=new File(System.getProperty("user.dir") + "/test/src/main/conf/testYaml.yaml");
        Map father =Yaml.loadType(dumpFile, HashMap.class);
        for(Object key:father.keySet()){
            System.out.println(key+":\t"+father.get(key).toString());
        }
    }
打印结果如下:

结果

提供 Maven pox.xml 作为参考

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.yaml</groupId>
    <artifactId>test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>test</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.jyaml</groupId>
            <artifactId>jyaml</artifactId>
            <version>1.3</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>
0
1
查看评论

yaml 4种java支持库的比较

yaml 官方给了4中java支持的库,但是目前(2014、)
  • gyflyx
  • gyflyx
  • 2014-08-18 19:40
  • 7870

Java解析Yaml介绍

序言:YAML是一种类似XML和JSON的用于格式化数据的标记语言,它的可读性比起XML和JSON更高一些,在反编译Apk时就会生成这么一个YAML文件,里面写了一些配置信息,关于YAML的具体语法在这就不具体介绍了,网上百度一下还是很多的。下面就记录一下我在项目中怎么去解析YAML文件的,解析YA...
  • LiuShuaiQ
  • LiuShuaiQ
  • 2017-06-13 11:20
  • 5142

Java读取/写入Yaml配置文件

JYaml文件流读取/写入Yaml配置文件yaml配置文件格式规范:- 表示sequence(list列表结构),: 表示map键值对 #以下是示例yaml结构age: 23 children: - age: 8 name: mary1 sex: man - ...
  • u013410747
  • u013410747
  • 2016-06-12 17:00
  • 16279

java 解析 yaml

当前还在维护的YAML解析器/生成器有: SnakeYAML 完整的YAML 1.1解析器,尤其是SnakeYAML能够分析来自于规范的所有示例支持Unicode,包括UTF-8/UTF-16的输入/输出为序列化和反序列化本地的Java对象提供了高级API支持YAML类型库中的所有类型比...
  • wangxin1982314
  • wangxin1982314
  • 2016-06-15 23:22
  • 2608

Yaml学习

[TOC] #YAML预研文档 ##YAML概要 [YAML](http://yaml.org/)是"YAML Ain't a Markup Language"(YAML不是一种置标语言)的递归缩写,早先YAML的意思其实是:"Yet Anothe...
  • conquer0715
  • conquer0715
  • 2014-12-23 20:22
  • 51799

YAML的Java实现——JYAML基本原理与示例(1)导出数据为YAML格式文件

1. Overview JYAML是YAML的Java实现,YAML的全称是YAML Ain't Markup Language,是否定递归定义,和LINUX的Linux Is Not UniX是一个意思。其结构之简单,常常成为导出或导入配置文件、数据结构等应用场景的常用API。 ...
  • Poechant
  • Poechant
  • 2011-11-27 17:18
  • 12731

Java 操作yaml和json之间的互相转换

需求: 通过标准的json格式,生成yaml文件,然后再读取yaml文件修改里面的某(多)个变量值,然后再生成新的json,json格式前后都一样,就是为了修改里面的某些变量值,所以用yaml作为中间桥梁
  • u010466329
  • u010466329
  • 2017-06-28 14:16
  • 3342

JAVA YAML解析API

  • 2015-03-06 10:23
  • 52KB
  • 下载

Snakeyaml(java解析Yaml文件)

  • 2017-06-13 10:54
  • 267KB
  • 下载

java版的yaml 解析器,试试jyaml

List的序列化和反序列化 向对象化的yaml的序列化,调用Yaml.dump方法即可。 List list = new ArrayList(); list.add("seq1"); list.add("seq2"); Yaml.dump(l...
  • u014112608
  • u014112608
  • 2014-05-16 10:59
  • 4801
    个人资料
    • 访问:295861次
    • 积分:4213
    • 等级:
    • 排名:第8609名
    • 原创:148篇
    • 转载:8篇
    • 译文:0篇
    • 评论:56条
    博客专栏