- 浏览: 99686 次
- 性别:
- 来自: 深圳
最新评论
-
weizaiC:
[flash=200,200][/flash]
ExtJS实现下拉列表级联 -
yanxunjian:
Java实现读取xml文件sql配置转换为JDBC SQL
...
Java实现读取xml文件sql配置转换为JDBC SQL -
road_16:
奶奶的,大妹子的
ExtJS实现下拉列表级联 -
road_16:
2.0版本的前台显示不了数据,3.0版本的才可以,检查了大半天 ...
ExtJS实现下拉列表级联 -
road_16:
怎么不说明extjs所使用的版本呢?版本不一样,写法也是不同的 ...
ExtJS实现下拉列表级联
将简单的POJO转化为JSON或者XML
- 博客分类:
- J2se
利用反射机制获取类的信息,然后将所得的信息,转化成JSON数据,方便传输或者生产xml文件
下面是我的实现方法,办法有点笨,欢迎指正,就是生产xml文件的是很,不知道怎么样修改配置信息,比如
<property name=" " /> 我这里生成的都是mxlls之类的信息,不知道怎么需要改,先放着再说,遇到解决的是很在回来修改。
package com.lzb.common; import java.io.File; import java.io.FileOutputStream; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; import java.util.Set; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; /** * * 功能描述:Java POJO转换成JSON字符串,或者XML * * @author lizhenbin * * <p>修改历史:(修改人,修改时间,修改原因/内容)</p> */ public class EntityChanageXmlJson { private static final String SPLIT_STR = ":"; private static final String KV_STR = ","; private static final String JSON_LEFT = "{"; private static final String JSON_RIGHT = "}"; private static final String SPLIT = "\""; private static final String PROP_SPLIT = ";"; private static final String XML_FIELD = "field"; private static final String XML_PROPERTY = "property"; private static final String XML_VALUE = "value"; private static EntityChanageXmlJson instance = null; public EntityChanageXmlJson() {}; public static synchronized EntityChanageXmlJson getInstance() { if(instance==null) instance = new EntityChanageXmlJson(); return instance; } /** * * 功能描述:将POJO的转化成json字符串形式, POJO的属性只可以是public的简单属性 * * @author lizhenbin * <p>创建日期 :May 7, 2012 12:38:31 PM</p> * * @param obj 转成为json的POJO对象 * @return * * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p> */ public static String pojoToJson(Object obj) { if(obj==null) { return null; } Map<Map<String,Object>,String> clazzmap = new HashMap<Map<String, Object>, String>(); /** * Java的反射机制获取类的信息 */ Class clazz = obj.getClass(); Field[] fields = clazz.getFields(); /** * 将Class的值放到map */ for(Field f : fields) { String key = f.getName(); String type = f.getType().getSimpleName(); Object value = null; try { value = f.get(obj); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } Map<String, Object> kvmap = new HashMap<String, Object>(); kvmap.put(key, value); clazzmap.put(kvmap, type); } /** * 构建json格式 */ if(clazzmap!=null) { String json = null; StringBuilder sb = new StringBuilder(); sb.append(JSON_LEFT); Set<Map<String, Object>> keySet = clazzmap.keySet(); for(Map<String, Object> skey : keySet) { Set<String> kvSet = skey.keySet(); for(String s : kvSet) { sb.append(SPLIT + s + SPLIT); sb.append(KV_STR); sb.append(SPLIT + skey.get(s) + SPLIT + SPLIT_STR); // 根据需求可以返回类型 // sb.append(SPLIT + clazzmap.get(skey) + SPLIT + PROP_SPLIT); } } sb.deleteCharAt(sb.toString().length()-1); sb.append(JSON_RIGHT); return sb.toString(); } return null; } /** * * 功能描述: 将简单的POJO转为xml形式 * * @author lizhenbin * <p>创建日期 :May 8, 2012 6:30:16 PM</p> * * @param obj 转成为xml的POJO对象 * @param path 生成xml存放的位置 * * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p> */ public static boolean pojoToXml(Object obj, String path) { Map<Map<String,Object>,String> clazzmap = new HashMap<Map<String, Object>, String>(); Class clazz = obj.getClass(); Field[] fields = clazz.getFields(); Object value = null; for(Field f : fields) { String key = f.getName(); try { value = f.get(obj); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } Map<String, Object> kvmap = new HashMap<String, Object>(); kvmap.put(key, value); String type = f.getType().getName(); clazzmap.put(kvmap, type); } /** * 生成xml */ try { /** * 初始化,使用dom生成xml,类的属性 */ Document doc = null; DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = dbfactory.newDocumentBuilder();; doc = docBuilder.newDocument(); /** * 创建XML的根节点(根),XML的根节点 */ Element root = doc.createElementNS(clazz.getName(), clazz.getSimpleName()); doc.appendChild(root); Element field = doc.createElementNS(XML_FIELD, XML_PROPERTY); root.appendChild(field); Set<Map<String,Object>> keySetMap = clazzmap.keySet(); for(Map<String,Object> smap : keySetMap) { Set<String> keySet = smap.keySet(); for(String s : keySet) { Element property = doc.createElementNS(s, XML_PROPERTY); field.appendChild(property); Element _child = doc.createElementNS(clazzmap.get(smap), XML_VALUE); _child.appendChild(doc.createTextNode(String.valueOf(smap.get(s)))); property.appendChild(_child); } } /** * 结束拼凑XML,输出xml */ TransformerFactory tff = TransformerFactory.newInstance(); Transformer transformer = tff.newTransformer(); File file = new File(path); FileOutputStream out = new FileOutputStream(file); StreamResult xmlResult = new StreamResult(out); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.transform(new DOMSource(doc), xmlResult); return true; } catch (Exception e) { e.printStackTrace(); return false; } } }
发表评论
-
poi创建Excel设计
2013-11-18 22:32 769电商商务,目前为止,做网站后台管理系统对到处数 ... -
程序员改变命运之程序,500W来了,信不信由你,每天JAVAC编译一下,JAVA一下500W就来了
2012-08-20 18:43 63胡乱写了一个随机数“双色球”程序,都是随机数,500W你信就有 ... -
JAVA读写文件基本方法
2012-08-20 09:30 870JAVA读写文件的基本方法,Reader 类是 J ... -
Java实现读取xml文件sql配置转换为JDBC SQL
2012-06-26 18:46 2437公司的框架都是用原生的JDBC框架,其中操作数据很 ... -
主键字符串自增Java实现
2012-06-09 17:41 5544程序实现字符串主键自增,例如:“SN000001” ... -
将Java字符串数组转化成对应的Entity
2012-06-06 09:14 3745最近新工作的 ... -
UDP通信
2012-05-10 17:54 914UDP通信,发送端发送数据,接受端接收数据,发送端发送数据不需 ... -
Java遍历、删除Map
2012-05-10 17:42 3495面试的时候,遇到一个很尴尬的事情,就是面试官问怎么 ... -
Java使用JXL创建Excel文件
2012-05-10 17:24 1908以前写过用jxl读取excel的,但是一直没有写 ... -
Java创建xml与排序
2012-05-05 19:53 2707DOM创建xml package com.lzb.model ... -
Java多线程
2012-05-05 19:49 786一个很有意思的题目,网上看到的,自己写了一下 题目的大概意思 ... -
Java的反射机制
2012-05-06 20:20 894Java的反射机制可以理解成,Java类Class ... -
TCP通信
2012-04-27 16:22 948TCP通信的一个模板 TCP的服务端用while一直接收客户 ... -
Java实现IP地址定位地址信息
2012-03-14 11:06 11305做电子商务网站的时候,网站的头部一般都有显示是哪个 ... -
Java文件操作
2012-02-07 16:34 850在工作中,经常要获取到文件所在的路径和创建文件夹,这里补充一下 ... -
MD5类使用
2012-01-12 11:13 1015对用户注册的密码加密类,采用MD5算法,留着以后用 注意,B ... -
验证码生成
2012-01-12 10:19 902系统登陆或者注册的时 ... -
Java取时间的一个类
2012-01-09 14:43 1142整理了一下自己开发过程中经常使用到的一个时间类,当做工具类使用 ... -
jdbc连接池
2011-12-30 16:49 875自己整理的一个JDBC驱动,方便以后离开框架直接测试,在mys ... -
Java创建文件和文件路径
2011-12-30 16:30 1854最近在开发过程中,经 ...
相关推荐
- JQuery - jquery.json2xml.js - jquery.xml2json.js 2. XML 字符串转换成 JSON 对象 $.xml2json(str); 3. JSON 对象转换成 XML 字符串 $.json2xml(obj);
自己写的json与xml互转工具 简单实用
js下xml转json和json转xml
jquery.json2xml.js&&jquery.xml2json.js在jQuery的基础上实现json与xml的相互转换
用于在C++结构体和json/xml之间互相转换, bson在xbson中支持。 只需要头文件, 无需编译库文件。 具体可以参考example的例子
将XML数据转化为JSON格式 使用方法: 1.添加对XmlToJSON.dll的引用 2. string JSON = XmlToJSON.Converter.XmlToJSON(xmlDoc); 示例: XmlDocument doc = new XmlDocument(); //doc.LoadXml(@"<root>aaa</root>...
json与xml互相转换工具类
Json和Xml离线格式化工具
在使用Ajax的时候,通常是将数据以XML的格式返回客户端,然后使用Javascript解析DOM结构。但W3C自带的方法和属性在操作的时候...处理一般的XML,可以通过以下的方法,将XML转换成JSON后,访问节点的时候格式很简单。
XML to JSON and JSON to XML converter
用于将XML转换为JSON和JSON到XML的Android库
JSON,XML,转换,互转,格式化,数据格式,数据交换,格式转换,格式互转,对比... JSON和XML和我们最常用的两种信息传输格式,但是有些时候,我们却需要两者之间的转换.
g关于Json介绍,用JSON替换XML
json2xml的代码。
xml 与 json 格式的相互转换,采用javascript 实现。
本实例主要是通过json-libjar包中的工具类进行操作,简单实现了xml字符串和json字符串之间的转化,xml文件和json文件的转化。而且还兼容jsonObject和jsonArray两种格式,自己摸索,记录一下以便学习。
json和xml比较,让你充分了解开发底层必备知识!
JSON-XML相关jar包.rar
ResultSet转化为json,json转化为List,轻松搞定
Dicom小工具(dcm转json、xml,xml转dcm等)