碰到的一个新的东西——yaml,果然是个好东西
yaml 基础语法可以看阮一峰大大的博客【yaml 语言教程】
看过了 xml 和 json之后,看一眼这个 yaml,觉得少写了好多东西,不用再去找层级关系了, yaml 直接一目了然,没有了尖括号,没有了大括号,没有了中括号,多了只是缩进和冒号【当然也会有大括号】,这点和有点像 python 了,注释和 properties 的注释一样,井号代表注释。
直接来个xml,json,yaml 格式的对比吧:
【
注:不知道为什么,我在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,果然是个好东西的更多相关文章
- 我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我们把圣经(bbe.txt)背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置。听说你是个优秀的程序员,那么髟助我们完成这个不可能的任务吧
编程任务:1.我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我们把圣经(bbe.txt)背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置.听说你是个优秀的程序 ...
- 【转】一个新的UIButtonMessage 给NGUI,使用委托,自动选择Receiver提供的方法
http://blog.csdn.net/chiuan/article/details/9290651?utm_source=tuicool&utm_medium=referral 来分享一个 ...
- 面对一个新的MCU,我再也不敢说第一步是点灯了
折腾了几天AT91SAM3S,今天才算是把开发板上的3个LED点亮. 在点亮之前,起码看了百八十页的Datasheet,动用了N次百度. 各种时钟,看门狗,分散加载,中断向量,都得去整.这些都远远超过 ...
- 如何向Openstack社区提交一个新项目
前几天有个朋友问我:自己有一个idea不错的项目,也把基本的框架写好了,想贡献到Openstack社区,却不知道应该怎么做.正好之前我有过类似的经历,那么来分享一下我是如何向Openstack社区提交 ...
- 关于点击ztree的节点将页面生成到easyui的新增选项卡(easyui-tabs)时,总是在浏览器中生成一个新的页面的问题
最近的项目中用到了easyui,还有ztree菜单.在这里将我遇到的一些问题写出来算是做个笔记吧. 这是我头一次在博客园里分享代码,我的处女作,写的不好的地方还望各位见谅! 由于很久没有写过前台的东西 ...
- 关于新feature对应的增加一个新的测试单子(QA)和文档单子(Doucmentation)的步骤
一,增加一个new feature的文档单子. 1.new feature 增加对应的文档单子(公司有一个组是专门写产品说明的)所以增加一个新的功能就要有这个新的功能对应的一个文档(Documenta ...
- VirtualBox 4.3“不能为虚拟电脑 打开一个新任务”解决方案 - 转
最近做项目因为设计不同网络,还要大家文件和数据库服务器环境,所以需要多台机器进行测试,最简单的方法当然是跑多个虚拟机了.虽然不可否认 VMware 确实强大,不过相比较起来我更喜欢功能比较简单轻省的 ...
- JS 点击元素发ajax请求 打开一个新窗口
JS 点击元素发ajax请求 打开一个新窗口 经常在项目中会碰到这样的需求,点击某个元素后,需要发ajax请求,请求成功以后,开发需要把链接传给前端(或者说请求成功后打开新窗口),前端需要通过新窗口打 ...
- 20135202闫佳歆--week6 分析Linux内核创建一个新进程的过程——实验及总结
week 6 实验:分析Linux内核创建一个新进程的过程 1.使用gdb跟踪创建新进程的过程 准备工作: rm menu -rf git clone https://github.com/mengn ...
随机推荐
- Linux 下 终端 相关的命令
1. 概述 Linux 服务器, 通常可以由多个终端连接 简单介绍一些 终端 相关的操作 最终的目的, 是定位到某个终端, 然后把它 踢下来, 甚至可以不让他再次连接 2. 环境 操作系统 CentO ...
- SAP 直接修改程序的方法
一般项目上都会有这么个神奇的程序,能在测试机和生产机上直接修改程序... REPORT ztest_change. "变量定义 , line() TYPE c, "如果代码中某行大 ...
- 20155222 2016-2017-2 《Java程序设计》第9周学习总结
20155222 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,开发人员使用JDBC的标 ...
- 罗佳琪的第三次预备作业——虚拟机的安装及Linux的初步学习
虚拟机的安装及Linux的初步学习 坎坷的安装过程 首先我按照老师给的基于VirtualBox虚拟机安装Ubuntu图文教程进行了下载,下载很顺利但是安装时出现了问题. 起初我以为是电脑位数问题,但我 ...
- Linux下MySql变量修改遇到的问题记录
一.问题记录: 项目上需要使用mysql的过程来自动化构建一批数据,但是调用的时候总是报找不到表或者过程 二.排查过程: (1)首先终端连接mysql后发现,无论表还是过程在数据库中都是存在的,排除了 ...
- Java——基于java自身包实现消息系统间的通信(TCP/IP+BIO)
最近看到阿里的一位童鞋写的一本关于分布式的书,感觉不错,准备把这本书上基础的代码都写一写. /** * Created by LiuHuiChao on 2016/11/15. * descripti ...
- 【HNOI2014】世界树
题面 题解 虚树好题(只是细节太多) 构出虚树后,一定要仔细梳理关键点之间的点是上面属于父亲,下面属于儿子. 然后二分出所有的点的所属就可以了 代码 #include<cstdio> #i ...
- 【LG5020】[NOIP2018]货币系统
[LG5020][NOIP2018]货币系统 题面 洛谷 题解 考场上第一眼还不会233 可以发现只要可以被其他的货币通过一些奇奇怪怪的方式表示出来的货币就\(ban\)掉即可 就是个完全背包 我是统 ...
- Jumpserver跳板机入门
1.jumpserver安装 1.1.环境介绍 系统: CentOS 7.4.1708IP: 192.168.56.110 [root@linux-node1 ~]# uname -r -.el7.x ...
- 学习HTML 第三节.接近正题:HTML样式-CSS级联样式表
CSS (Cascading Style Sheets)级联样式表 内联样式 内联样式- 在HTML元素中使用"style" 属性 使用内联样式的方法是在相关的标签中使用样式属性. ...
