yaml学习

1.yaml概要
初次接触到yaml语言,是在做一个过程优化时,希望对一系列配置引入的数据得到规范。希望代码中获取数据简便,也希望规范能够明了易懂
在接触yaml应用前,基本使用的文件xml。而同样拥有语言规范的yaml文件相比xml,没有类似XML的语言定义文件纲要──例如xml需要保证本身的结构正确、节点无缺失等。
2.yaml结构规范

# YAML文件普遍格式
---
site: 
    name: sina 
    url : http://www.sina.com.cn
---
site:
    name: google
    url : http://www.google.com

或:
---
site: {name: sina, url: http://www.sina.com.cn}
---
site: {name: google, url: http://www.google.com}

 YAML利用缩进或者是explicit indicatior(如上面的{})来表示属性的嵌套,更为直观。

3.java代码实现

#snakeyaml.jar包

new Yaml().load() --把yml转为obj
new Yaml().dump() --把obj转为yml

YAML与java类型对照表:

YAMLJAVA
!nullnull
!!boolBoolean
!!intInteger, Long, BigInteger
!!floatDouble
!!binaryString
!!timestampjava.util.Date, java.sql.Date, java.sql.Timestamp
!!omap, !!pairsList of Object[]
!!setSet
!!strString
!!seqList
!!mapMap

集合的默认实现是:

  • List: ArrayList
  • Map: LinkedHashMap

4.此次项目中需要的代码实现块

public static List<OrderType> getYamlData(String yaml) throws IllegalAccessException, InvocationTargetException {
        List<OrderType> list = new ArrayList<OrderType>();
        LinkedHashMap map = (LinkedHashMap) new Yaml().load(yaml);

        for (Iterator it = map.keySet().iterator(); it.hasNext();) {
            OrderType data = new OrderType();
            Object orderType = it.next();
            System.out.println(orderType + "=" + map.get(orderType));
            LinkedHashMap value = (LinkedHashMap) map.get(orderType);
            for (Iterator its = value.keySet().iterator(); its.hasNext();) {
                Object values = its.next();
                BeanUtils.populate(data, value);
            }
            //System.out.println(data.toString());
            list.add(data);
        }
        return list;
    }

5.初学时学习的博客

http://blog.csdn.net/conquer0715/article/details/42108061
http://blog.csdn.net/lucky_greenegg/article/details/60957462

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值