数据类型转换
来源:互联网 发布:大数据大会 2017 编辑:程序博客网 时间:2024/06/09 06:39
针对项目中常用的配置项且需要变动的,最好定义实体类设置默认值,并将实体类转化为Json或Xml存储在数据库中.
对于XML不仅可以解决路径问题,而且可以防止项目构建时配置文件的覆盖问题.
1.String与Map相互转化
1)String转Map
public static Map<String,String> transStringToMap(String mapString){ Map<String,String> map = new HashMap<String,String>(); StringTokenizer items; for(StringTokenizer entrys = new StringTokenizer(mapString, "&");entrys.hasMoreTokens(); map.put(items.nextToken(),(items.hasMoreTokens() ? ((items.nextToken())) : null))) items = new StringTokenizer(entrys.nextToken(), "="); return map; }2).Map转String
public static String transMapToString(Map map){ java.util.Map.Entry entry; StringBuffer sb = new StringBuffer(); for(Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) { entry = (java.util.Map.Entry)iterator.next(); sb.append(entry.getKey().toString()).append( "'" ).append(null==entry.getValue()?"": entry.getValue().toString()).append (iterator.hasNext() ? "^" : ""); } return sb.toString(); }
2.Xml字符串转Java对象
public static <T> T getObjFromXml(String content, T object) {//将从API返回的XML数据映射到Java对象XStream xStreamForResponseData = new XStream();xStreamForResponseData.alias("xml", object.getClass());xStreamForResponseData.ignoreUnknownElements();//暂时忽略掉一些新增的字段@SuppressWarnings("unchecked")T t = (T) xStreamForResponseData.fromXML(content, object);return t;}
3.实体类和JSON对象相互转化
Gson里最重要的对象有2个Gson 和 GsonBuilder。
Gson有2个最基本的方法
1)toJson() – 转换java 对象到JSON
2)fromJson() – 转换JSON到java对象
4.实体类和XML对象相互转化
参考:dom4j对XML数据文件的增删查改操作
1.引入maven的Jar包
<dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version></dependency>
2.转化工具类import java.io.File;import java.io.FileWriter;import java.io.InputStream;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;@SuppressWarnings("unchecked")public class XmlUtils {private static final String fileName = "config.xml"; public static boolean modifigXML(Object obj,String comment){ boolean isOk = false; try{ //建立document对象 Document doc = DocumentHelper.createDocument(); //建立XML文档的根books Element root = doc.addElement("xmlModel"); root.addComment(comment);//加入一行注释 Field[] field = obj.getClass().getDeclaredFields(); for (int i = 0; i < field.length; i++) { String name = field[i].getName(); Element title = root.addElement(name); name = name.replaceFirst(name.substring(0, 1), name.substring(0, 1) .toUpperCase()); Method m = obj.getClass().getMethod("get" + name); String value = (String) m.invoke(obj); title.setText(value); } //将doc中的内容写入文件中 try{// String filePath = XmlUtils.class.getClassLoader().getResource(fileName).getFile();// 文件的路径 System.out.println("-----更新路径------"+fileName); FileWriter newFile = new FileWriter(new File(fileName)); XMLWriter newWriter = new XMLWriter(newFile); newWriter.write(doc); newWriter.close(); }catch(Exception e){ e.printStackTrace(); } System.out.println("正在格式化中..."); if(formatXML()) System.out.println("恭喜,格式化完成!"); else System.out.println("格式化失败!请检查后重新再试!");; isOk = true; }catch(Exception e){ e.printStackTrace(); } return isOk; } /** *获取xml数据并转换为实体类 * */ public static Object readXML(){ Object object = null; try{ SAXReader reader = new SAXReader();// InputStream inputStream = XmlUtils.class.getClassLoader().getResourceAsStream(fileName);// 文件的路径 Document doc = reader.read(fileName); Element root=doc.getRootElement();//获取根节点 ;List<Element> elementlist = root.elements();//所有一级子节点的list Map<String,Object> map = new HashMap<String,Object>(); for(Element e:elementlist){//遍历所有一级子节点 map.put(e.getName(),e.getText()); } object = mapToBean(map,XmlModel.class); }catch(Exception e){ e.printStackTrace(); }return object; } /** * map转换为实体类 * @param map 需要转换的map * @param cls 目标javaBean的类对象 * @return 目标类object * @throws Exception */ public static Object mapToBean(Map<String,Object> map,Class cls) throws Exception{ Object object = cls.newInstance(); for (String key : map.keySet()){ Field temFiels = cls.getDeclaredField(key); temFiels.setAccessible(true); temFiels.set(object, map.get(key)); } return object; } /** * xml格式化 * 默认的输出方式为紧凑方式,默认编码为UTF-8, * 但对于我们的应用而言,一般都要用到中文, * 并且希望显示时按自动缩进的方式的显示,这就需用到OutputFormat类。 */ public static boolean formatXML(){ boolean isOk = false; try{ SAXReader reader = new SAXReader();// InputStream inputStream = XmlUtils.class.getClassLoader().getResourceAsStream(fileName);// 文件的路径 Document doc = reader.read(fileName); XMLWriter formatWriter = null; OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8"); formatWriter = new XMLWriter(new FileWriter(new File(fileName)),format); formatWriter.write(doc); formatWriter.close(); isOk = true; }catch(Exception e){ e.printStackTrace(); } return isOk; } public static void main(String[] args){ long start = System.currentTimeMillis();//开始计时 XmlUtils dom4jDemo = new XmlUtils(); System.out.println("正在更新中..."); XmlModel xmlModel = new XmlModel(); xmlModel.setPhone_count(String.valueOf(7)); xmlModel.setIdcard_count(String.valueOf(8)); xmlModel.setBank_card_count(String.valueOf(9)); boolean isOk_modi = dom4jDemo.modifigXML(xmlModel,new Date().toString()); if(isOk_modi) System.out.println("恭喜,更新完成!"); else System.out.println("更新失败!请检查后重新再试!"); System.out.println("正在格式化中..."); boolean isOk_format = dom4jDemo.formatXML(); if(isOk_format) System.out.println("恭喜,格式化完成!"); else System.out.println("格式化失败!请检查后重新再试!"); System.out.println("正在读取文件 "+fileName+" ..."); System.out.println("------------------------------------------------"); dom4jDemo.readXML(); System.out.println("------------------------------------------------"); System.out.println(fileName+"读取成功!"); System.out.println("一共耗时: "+(System.currentTimeMillis()-start)+"毫秒!"); }}
阅读全文
0 0
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 数据类型转换
- 设计模式-行为型软件设计模式(一)
- Perl语言入门——Perl变量简介
- 外边距折叠
- 机器学习
- 机械基础知识—齿轮
- 数据类型转换
- hbuilder的移动端APP如何实现微信支付,求具体流程详解
- 数组简解!!!
- 【原创】【贪心】Yogurt factory POJ-2393
- spring jquery Mobile 页面跳转后浏览器url未改变&&javaScript代码刷新后才能执行的问题解决
- 前端优化 9 个技巧,提高 Web 性能
- MyEclipse启动出现An out of memory error has occurred.
- js中加【var】和不加【var】的区别
- 面试题:求1+2+....+n的和