yaml使用心得

  最近一段时间接触了yaml,作为一种序列化语言,yaml的可读性似乎要比xml更容易理解,比csv要更轻量级。目前,yaml作为项目中自动化框架的一种数据配置文件,在使用过程中受到一定的好评~下面总结一下在实际使用中的心得。



  yaml的样式:

  

  yaml的使用方法:

 1 private String yamlFile;
 2
 3 private HashMap<String, HashMap<String, String>> ml;
 4
 5     /**
 6     * @function 构造函数
 7     */
 8     public YamlUtil() {
 9         yamlFile = "test";
10         this.getYamlFile();
11     }
12
13     /**
14     * @function 加载yaml文件
15     */
16     @SuppressWarnings("unchecked")
17     public void getYamlFile() {
18
19         File f = new File("test/" + yamlFile + ".yaml");
20         try {
21             ml = Yaml.loadType(new FileInputStream(f.getAbsolutePath()),HashMap.class);
22         } catch (FileNotFoundException e) {
23             e.printStackTrace();
24         }
25     }
26
27     /**
28     * @function 获取yaml文件中对应关键字信息
29     * @param keyword
30     * @return
31     */
32     public Map<String,String> getKeyWordInfos(String keyword) {
33
34         HashMap<String,String> map = new HashMap<String,String>();
35         map = ml.get(keyword);
36         return map;
37     }
38 }

  yaml遇到的小坑:

  1、注意冒号的全半角....这个不多说了啊

  2、key值不能为全数字

  test.yaml:

33033:
  name:driver
  age:24

  这种情况下,在使用ml.get(keyword)的时候获取的结果是null

  3、编码格式问题,如果使用中文请用UTF-8,不可以为UTF-8-BOM格式。

  

  这种样式,在使用过程中ml.get(keyword)时,同样获取的结果是null。

    /**
     * @function 获取yaml文件中对应关键字信息
     * @param keyword
     * @return
     */
    public Map<String,String> getKeyWordInfos(String keyword) {

        HashMap<String,String> map = new HashMap<String,String>();
        for (String key : ml.keySet()){
            System.out.println(key.charAt(0));
            if (key.equals(keyword)){
                map = ml.get(keyword);
            }
        }

        return map;
    } 

  在执行key.equals(keyword)时,key是father,keyword也是father但是实际运行的结果是false,进一步分析发现,key和keyword的hashcode并不相等,key.charAt(0)的值是"",当时有点蒙圈。获取key的前3个字节发现结果如下,这是UTF-8的一种表现形式。最终尝试才发现是UTF-8-BOM在作怪。。

以上是本人在使用过程中遇到的问题,在此,再次感谢飞总和达子。

时间: 2024-10-01 06:08:36

yaml使用心得的相关文章

Delphi组件indy 10中IdTCPServer修正及SSL使用心得

indy 10终于随着Delphi2005发布了,不过indy套件在我的印象中总是复杂并且BUG不断,说实话,不是看在他一整套组件的面子上,我还是喜欢VCL原生的Socket组件,简洁,清晰.Indy9发展到了indy10几乎完全不兼容,可叹啊.言归正传.在使用IdTCPServer组件的时候发现了他的漏洞,他的OnConnec,OnExecute,OnDisconnect等事件是在其他线程中执行的,通常情况下这没有问题,但是在特殊的情况下会造成问题,如果其他部分的程序写得有问题就会出现漏洞.

Linux系统理解以及Linux系统学习心得

原创作品转载请注明出处  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 作者:严哲璟 说一下我对Linux系统的理解 1.加载Linux内核准备:在加载基本输入输出模块(BIOS)之后,从磁盘的引导扇区读入操作系统的代码文件块到内存中,之后开始整个系统的初始化. 2.main.c的start_kernel函数是整个操作系统的入口,这也与Linux是基于C语言的特性相符,start_kernel具体做的动作很多

参加老男孩linux培训心得

参加老男孩linux培训心得 时间如白驹过隙,已经不知不觉来到老男孩培训已经三个月了.在这三个月中我渐渐得到了成长,专业技术成长,以及为人处事之道与思想的提高. 我一共就总结以下了三点     一.思想 在我刚来老男孩的时候,老师天天上课前讲一段思想,我当时不太明白,不赶紧上课,讲这干啥呢?而且老师早一点讲完,又可以招下一批学生了,老讲思想,这不是自断财路么?随着时间的流逝,渐渐的我悟懂了点.人在那里都可以学技术,但是学会了技术没有思想,一旦来了新事物,就会接受的很慢.尤其在互联网这个圈子里,软

atitit.手动配置列表文件的选择and 数据的层次结构 attilax总结最佳实践--yaml

atitit.手动配置列表文件的选择and 数据的层次结构 attilax总结最佳实践--yaml 1. yaml是个好的选择.. 1 2. 数据的层次结构--结构:hash,list,和block literal. 1 3. yaml跟json的实现区别 1 4. xml的优点及json的问题 2 4.1. ide友好 2 4.2. JSON也适合与任何数据,复杂struts难以阅读 2 4.3. json难以手工维护 3 5. 基于YAML的开源项目解析YAML文件最常用的Java库是JvY

Linux串口IO模式的一些心得

众所周知,在Linux系统下所有设备都是以文件的形式存在,串口也一样. 通常I/O操作都是有阻塞与非阻塞的两种方式. 其中"超时"这个概念其实是阻塞中的一种处理手段,本质还是属于阻塞的I/O模式. 在Linux中串口的IO操作 本文将它分为三种状态: 阻塞状态 超时状态 非阻塞状态 这三种状态的转换组合有这么几种: 阻塞 --> 超时 阻塞 --> 非阻塞 超时 --> 阻塞 超时 --> 非阻塞 非阻塞 --> 阻塞 我们一个一个来分析 首先在一个串口的

我的MYSQL学习心得(八)

我的MYSQL学习心得(八) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 这一篇<我的MYSQL学习心得(七)>将会讲解MYSQL的插入.更新和删除语句 同样的,只会讲解跟SQLSERVER不同的地方 插入 将多行查询结果插入到表中 语法 INSERT INTO table_name1(column_list1) SELECT (

《不要让我思考》读后心得2

---内容开始--- Don't let me think! 这本书以网站可用性为目的,从作者自身工作和经验角度,站在用户的心理立场上,介绍了作为设计者如何做出可用性的web设计. 其中包含的内容有: 1.别让我思考(定律) 当看到一个不需要思考的网站时: 当看到一个要思考的网站时: @创建一个网站时,要去掉这些问号. 有时候网站会强迫我们思考,名字,常见的罪魁祸首就是改成自以为很酷很聪明的,带有营销色彩的名字. 还有另一个来源是看起来不太明显的链接和按钮,会造成用户犹豫可不可点. @类似的例子

【管理心得之二十二】小人物 仰视 大授权

场景再现====================Boss:小王,来我办公室一下.小王: 嗯Boss:近期总公司有会,需要到外地出差几日.我不在的这段期间里,公司大小事务你帮忙处理一下.          如果有什么难决定的事,第一时间电话.邮件联系我商定即可.小王:  明白.放心吧领导,绝不会让你失望的Boss:嗯,那就好,没事了. {小王走出办公室} 心中暗喜,"难道这就是传说中的授权,Boss不在的时候,我岂不是最高权力的行使者." ==================== 从场景

python 爬虫抓取心得

quanwei9958 转自 python 爬虫抓取心得分享 urllib.quote('要编码的字符串') 如果你要在url请求里面放入中文,对相应的中文进行编码的话,可以用: urllib.quote('要编码的字符串') query = urllib.quote(singername) url = 'http://music.baidu.com/search?key='+query response = urllib.urlopen(url) text = response.read()