yaml 基础语法可以看阮一峰大大的博客【yaml 语言教程

看过了 xml 和 json之后,看一眼这个 yaml,觉得少写了好多东西,不用再去找层级关系了, yaml 直接一目了然,没有了尖括号,没有了大括号,没有了中括号,多了只是缩进和冒号【当然也会有大括号】,这点和有点像 python 了,注释和 properties 的注释一样,井号代表注释。

直接来个xml,json,yaml 格式的对比吧:

yaml 和 json在线格式对比

注:不知道为什么,我在windows live writer上插入的链接有时候是好着的,有时候又多了我的博客地址的前缀,

比如这个,显示的地址是{http://www.cnblogs.com/daimajun/p/nodeca.github.io/js-yaml/},大括号中黑色字体为正确的链接,

剪切下来就可以访问了。

xml 格式:

<site>
<name>baidu</name>
<url>http://www.baidu.com.cn</url>
</site>
<site>
<name>google</name>
<url>http://www.google.com</url>
</site>

Json 格式:

{
"site":{"baidu":"www.baidu.com",
"google":www.google.com}
}

yaml 格式:

---
site:
name: baidu
url : http://www.baidu.com.cn
---
site:
name: google
url : http://www.google.com

就这一小段数据,就能看出 yaml 相比 xml 和 json,简单明了很多。

那么在 Java 中怎么使用 yaml 呢?肯定跟 xml 一样啊,xml 有 DOM 和 SAX解析,yaml 有Jyaml解析。

Jyaml的源代码包下载地址【Jyaml 源代码

Jyaml的 jar 包下载地址【Jyaml 的 jar包下载】【因为博客园只能上传zip格式的,所以是 zip 格式的,下载下来后,转换为 jar 结尾的文件就可以】

【不知道为什么,有时候超链接会出问题,这里的 jar 包下载的链接是{files.cnblogs.com/files/daimajun/jyaml-1.3.zip},每次打开在前面都带我的博客地址】

新建一个普通Java Project,添加 Jyaml.jar 包,下面是代码:

package com.msym.jyaml;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException; import org.ho.yaml.Yaml; public class Test { public static void main(String[] args) throws FileNotFoundException {
//初始化yaml解析器
Yaml yaml = new Yaml();
File f = new File("D:/eclipseEE/EEworkspace/Jyaml/src/com/msym/jyaml/test.yaml");
// 加载yaml文件
Object result = yaml.load(new FileInputStream(f));
//打印出来将会是HashMap
System.out.println(result.getClass());
System.out.println(result);
} }

test.yaml 文件中内容:

---
site:
name: baidu
url : http://www.baidu.com.cn
---
site:
name: google
url : http://www.google.com

程序运行结果:

我也写一下这个 yaml 的基础语法,加深一下自己的印象。

yaml 支持三种格式的数据:

  • 对象:键值对的集合,又称映射(mapping)/哈希(Hashes)/字典(dictionary)
  • 数组:一组按序列排列的值,又称为序列(sequence)/列表(List)
  • 纯量(scalars):单个的,不可分割的值

第一种:对象

等过段时间在工程中研究下这个 yaml文件。

在 IDEA 中使用 yml 真的是智能。

碰到的一个新的东西——yaml,果然是个好东西的更多相关文章

  1. 我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我们把圣经(bbe.txt)背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置。听说你是个优秀的程序员,那么髟助我们完成这个不可能的任务吧

    编程任务:1.我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我们把圣经(bbe.txt)背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置.听说你是个优秀的程序 ...

  2. 【转】一个新的UIButtonMessage 给NGUI,使用委托,自动选择Receiver提供的方法

    http://blog.csdn.net/chiuan/article/details/9290651?utm_source=tuicool&utm_medium=referral 来分享一个 ...

  3. 面对一个新的MCU,我再也不敢说第一步是点灯了

    折腾了几天AT91SAM3S,今天才算是把开发板上的3个LED点亮. 在点亮之前,起码看了百八十页的Datasheet,动用了N次百度. 各种时钟,看门狗,分散加载,中断向量,都得去整.这些都远远超过 ...

  4. 如何向Openstack社区提交一个新项目

    前几天有个朋友问我:自己有一个idea不错的项目,也把基本的框架写好了,想贡献到Openstack社区,却不知道应该怎么做.正好之前我有过类似的经历,那么来分享一下我是如何向Openstack社区提交 ...

  5. 关于点击ztree的节点将页面生成到easyui的新增选项卡(easyui-tabs)时,总是在浏览器中生成一个新的页面的问题

    最近的项目中用到了easyui,还有ztree菜单.在这里将我遇到的一些问题写出来算是做个笔记吧. 这是我头一次在博客园里分享代码,我的处女作,写的不好的地方还望各位见谅! 由于很久没有写过前台的东西 ...

  6. 关于新feature对应的增加一个新的测试单子(QA)和文档单子(Doucmentation)的步骤

    一,增加一个new feature的文档单子. 1.new feature 增加对应的文档单子(公司有一个组是专门写产品说明的)所以增加一个新的功能就要有这个新的功能对应的一个文档(Documenta ...

  7. VirtualBox 4.3“不能为虚拟电脑 打开一个新任务”解决方案 - 转

    最近做项目因为设计不同网络,还要大家文件和数据库服务器环境,所以需要多台机器进行测试,最简单的方法当然是跑多个虚拟机了.虽然不可否认 VMware 确实强大,不过相比较起来我更喜欢功能比较简单轻省的 ...

  8. JS 点击元素发ajax请求 打开一个新窗口

    JS 点击元素发ajax请求 打开一个新窗口 经常在项目中会碰到这样的需求,点击某个元素后,需要发ajax请求,请求成功以后,开发需要把链接传给前端(或者说请求成功后打开新窗口),前端需要通过新窗口打 ...

  9. 20135202闫佳歆--week6 分析Linux内核创建一个新进程的过程——实验及总结

    week 6 实验:分析Linux内核创建一个新进程的过程 1.使用gdb跟踪创建新进程的过程 准备工作: rm menu -rf git clone https://github.com/mengn ...

随机推荐

  1. # 学号20155308 2006-2007-2 《Java程序设计》第4周学习总结

    学号20155308 2006-2007-2 <Java程序设计>第4周学习总结 教材学习内容总结 6.1 何谓继承 继承基本上就是避免多个类间重复定义共同行为. 许多类之间具有相同的属性 ...

  2. 20155321 2016-2017-2 《Java程序设计》第二周学习总结

    教材学习内容总结 这星期主要学习了Java语言中的各种运算符以及基本的一些语句,除了个别地方之外大部分和以往C语言学的东西比较相似,在比较中看教材学习比较容易掌握第三章的内容,课后练习的难度也不是很大 ...

  3. 20155322 2017-2018-1《信息安全系统设计》第九周 Linux命令:pwd命令学习与简单实现

    pwd命令学习 功能 Linux中用 pwd 命令来查看"当前工作目录"的完整路径. 格式 pwd [选项] 实例 用 pwd 命令查看默认工作目录的完整路径: 用 pwd 命令查 ...

  4. [BZOJ1857][SCOI2010]传送带-[三分]

    Description 传送门 Solution 三分套三分.代码简单但是证明苦兮兮.. 假如我们在AB上选了一个点G,求到该点到D的最小时间. 图中b与CD垂直.设目前从G到D所耗时间最短的路径为G ...

  5. C#:在AnyCPU模式下使用CefSharp

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述如何在AnyCPU模式下使用CefSharp 因为在某些情况下,不得不用AnyCPU,但是CefS ...

  6. web中简单wcf的创建和应用

    以前做过wcf控制台作为宿主,今天回顾一下,不过公司用的web直接创建就把这种过程写下来. 第一步:创建wcf页面如图 第二步:创建wcf时候已经自动生成了接口(契约)和实现类(契约),但是我们可以修 ...

  7. UGUI简易摇杆

    实现 直接使用系统自带圆形控件图标 编写脚本, 实现UGUI拖拽事件 将多拽范围限定于给定半径和圆心的圆内 计算出等同于Input.GetAxis()的值,直接控制被控制物体 代码 using Sys ...

  8. winform圆角窗体实现

    winform圆角窗体实现 1.窗体的FormBorderStyle设置成None,不要控制边框 2.TransparencyKey和BackColor颜色设置成相同的,这样,窗体就透明了 3.以此为 ...

  9. 亚马逊:PS4和Xbox One实在太火

    圣诞节刚刚结束,当实体零售商在抱怨坑爹的天气让自己节日生意变得冷清的同时,在线零售商们却依旧赚的盆满钵满. 亚马逊近日表示,今年节日期间的零售工作非常不错,新一代游戏机更是最大的亮点.据销售统计,在圣 ...

  10. 使用 MPI for Python 并行化遗传算法

    前言 本文中作者使用MPI的Python接口mpi4py来将自己的遗传算法框架GAFT进行多进程并行加速.并对加速效果进行了简单测试. 项目链接: GitHub: https://github.com ...