Java处理yaml文件 yaml文件格式如下:
1 2 3 --- !dataBean.pc.overduequery.OverdueBean id: 'default' mobileNumber: '15711101521'
DataBean类:
DataBean类用来set和get数据,并对外提供public级别访问权限以使可以读写数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 package dataBean.pc.overduequery;import dataBean.IDataBean;public class OverdueBean implements IDataBean { private String id; private String idCardNo; private String mobileNumber; @Override public String getId () { return id; } public void setId (String id) { this .id = id; } public String getIdCardNo () { return idCardNo; } public void setIdCardNo (String idCardNo) { this .idCardNo = idCardNo; } public String getMobileNumber () { return mobileNumber; } public void setMobileNumber (String mobileNumber) { this .mobileNumber = mobileNumber; } }
解析 DataFactory.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 package dataTool;import dataBean.IDataBean;import dataBean.pc.overduequery.OverdueBean;import org.ho.yaml.Yaml;import java.io.FileNotFoundException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;public class DataFactory { public static <T> T GetData (Class<T> objectClass) throws FileNotFoundException { String objectClassName = objectClass.getName(); if (null != objectClassName) { objectClassName = objectClassName.replace("." , "/" ).replace("dataBean" , "yaml" ); } String path = objectClassName + ".yaml" ; InputStream inStream = ClassLoader.getSystemResourceAsStream(path); T tObject = Yaml.loadType(inStream, objectClass); return tObject; } public static <IDataBean> List GetDataList (Class<IDataBean> objectClass) { String objectClassName = objectClass.getName(); if (null != objectClassName) { objectClassName = objectClassName.replace("." , "/" ).replace("dataBean" , "yaml" ); } String path = objectClassName + ".yaml" ; InputStream inStream = ClassLoader.getSystemResourceAsStream(path); List<IDataBean> objList = new ArrayList <IDataBean>(); for (Object obj : Yaml.loadStream(inStream)) { objList.add((IDataBean) obj); } return objList; } public static <T extends IDataBean > T getObject (Class<T> objectClass, String id) throws Exception { List<IDataBean> DataList = DataFactory.GetDataList(objectClass); for (IDataBean dataBean : DataList) { if (dataBean.getId().equals(id)) return (T) dataBean; } throw new Exception ("No data by use id in this yaml file!!!!" ); } public static void main (String[] args) throws Exception { OverdueBean overdueBean = new OverdueBean (); overdueBean = DataFactory.getObject(OverdueBean.class, "default" ); System.out.println(overdueBean.getMobileNumber()); } }
yaml文件路径要与其对应的Bean类文件路径一致.