java to xml 框架_Jackson_Java和Json/XML互转的开源框架

[在Java项目中將一个对象转换成一段Json格式的字符串是非常常见的,能够实现这种需求的工具包也比较多,例如Gson、JSON-lib、Jackson等等。本文主要介绍Jackson的使用,Jac

记得当时我在优化同事的Oauth能力开放项目的时候,需要把Java对象转化为Json和XML格式。当时是花了一天的时间,尝试了各种开源框架,最终选用了Jackson(官网:http://jackson.codehaus.org/)。它支持Java和Json格式的互转,同时也支持Java和XML的互转。它简单易用,而且通过简单的封装就可以适合项目的需求。

用到的Jar包:①jackson-all-1.9.5.jar、②jackson-xml-databind-0.6.0.jar、③stax2-api-3.1.1.jar

(下载地址:①http://jackson.codehaus.org/1.9.5/jackson-all-1.9.5.jar②http://www.jarvana.com/jarvana/archive-details/com/fasterxml/jackson-xml-databind/0.6.0/jackson-xml-databind-0.6.0.jar③http://repo1.maven.org/maven2/org/codehaus/woodstox/stax2-api/3.1.1/stax2-api-3.1.1.jar)

1、单例类,包括ObjectMapper 和 XMLMapper,分别用于实现Java和Json、XML格式的互转

[Jackson解析的速度算是同类框架中最快的,同时也是Spring MVC中内置使用的解析方式。  准备工作: 下载jar包:http://jackson.codehaus.org/1.7.6/jackson-all-1.7.6.jarJ

package cn.eshore.pm.json;

import org.codehaus.jackson.map.ObjectMapper;

import com.fasterxml.jackson.xml.XmlMapper;

/**

*

* @author yehuanwen

*/

public class JacksonMapper {

/**

* can reuse, share globally

*/

private static final ObjectMapper object = new ObjectMapper();

/**

* can reuse, share globally

*/

private static final XmlMapper xml = new XmlMapper();

/**

* private constructor

*/

private JacksonMapper() {

}

/**

* return a ObjectMapper that is singleton

* @return

*/

public static ObjectMapper getObjectMapper() {

return object;

}

/**

* return a XmlMapper that is singleton

* @return

*/

public static XmlMapper getXmlMapper() {

return xml;

}

}

2、工具类,封装了Mapper里面的方法,实现Java对象转Json和XML

package cn.eshore.pm.json;

import java.io.IOException;

import java.util.Map;

import java.util.TreeMap;

import org.codehaus.jackson.JsonGenerationException;

import org.codehaus.jackson.map.JsonMappingException;

import org.codehaus.jackson.map.ObjectMapper;

import com.fasterxml.jackson.xml.XmlMapper;

/**

*

* @author yehuanwen

*/

public class JacksonUtils {

public static void main(String[] args) {

System.out.println("JacksonUtils...");

Map nameValuePair = new TreeMap();

nameValuePair.put("Account", "2222222");

nameValuePair.put("pUserID", "123456");

System.out.println(JacksonUtils.toJson(nameValuePair));

System.out.println(JacksonUtils.toXML(nameValuePair,

"getMobile_response"));

}

/**

* Object to XML, default root name is 'root'

*

* @param nameValuePair

* @return

*/

public static String toXML(Object object) {

return toXML(object, "root");

}

/**

* Object to XML

*

* @param nameValuePair

* @param rootName

* @return

*/

public static String toXML(Object object, String rootName) {

try {

XmlMapper xml = JacksonMapper.getXmlMapper();

// Object to XML

String xmlStr = xml.writeValueAsString(object);

String xmlHeader = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";

// Object Class Name

String mapClassName = object.getClass().getSimpleName();

String beginStr = "";

String endStr = "" + mapClassName + ">";

int beginNum = beginStr.length();

int endNum = xmlStr.indexOf(endStr);

String subStr = xmlStr.substring(beginNum, endNum);

StringBuffer sb = new StringBuffer();

sb.append(xmlHeader).append("").append(subStr)

.append("" + rootName + ">");

return sb.toString();

} catch (JsonGenerationException e) {

e.printStackTrace();

} catch (JsonMappingException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

/**

* Object to Json

*

* @param object

* @return

*/

public static String toJson(Object object) {

try {

ObjectMapper mapper = JacksonMapper.getObjectMapper();

return mapper.writeValueAsString(object);

} catch (JsonGenerationException e) {

e.printStackTrace();

} catch (JsonMappingException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

}

运行结果:

JacksonUtils...

{"Account":"2222222","pUserID":"123456"}

<?xml version="1.0" encoding="UTF-8"?>2222222123456

[Jackson 框架,轻易转换JSONJackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。相比json-lib框架,Jackson所依赖的jar包较少,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值