注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

北漂的小羊

Java编程,开发者,程序员,软件开发,编程,代码。新浪微博号:IT国子监

 
 
 

日志

 
 
关于我

在这里是面向程序员的高品质IT技术学习社区,是程序员学习成长的地方。让我们更好地用技术改变世界。请关注新浪微博号: IT国子监(http://weibo.com/itguozijian)

网易考拉推荐

[项目实战]Jackson 框架之java对象和json数据转换实现  

2015-01-16 15:02:33|  分类: 软件开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
简介:
Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将jsonxml转换成Java对象。

官方wiki:http://wiki.fasterxml.com/JacksonInFiveMinutes

官方文档:http://wiki.fasterxml.com/JacksonDocumentation

github:https://github.com/FasterXML/jackson

 

 

一、准备工作
jackson-databind 下载地址:
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/
注意:使用此功能需要依赖以下jar文件
	jackson-core 和 jackson-annotations
	github:
https://github.com/FasterXML/jackson-annotations

下载地址:http://repo1.maven.org/maven2/com/fasterxml/jackson/core/

二、实例
(1)java对象转JSON
Java代码 
  1. /*** 
  2.      * json转clazz类(不含类中属性数据验证) 
  3.      */  
  4.     public static Object jsonToObject(String jsonString, Class clazz){  
  5.         ObjectMapper mapper = new ObjectMapper();  
  6.         try {  
  7.             return mapper.readValue(jsonString, clazz);  
  8.         }catch (Exception e) {  
  9.             // TODO Auto-generated catch block  
  10.         }  
  11.     }  
 2jsonjava对象
	json结构:
实现方法:
Java代码 
  1.   /*** 
  2.    * json转clazz类(不含类中属性数据验证) 
  3.    */  
  4.   public static Object jsonToObject(String jsonString, Class clazz){  
  5. ObjectMapper mapper = new ObjectMapper();  
  6. try {  
  7.     return mapper.readValue(jsonString, clazz);  
  8. }catch (Exception e) {  
  9.     // TODO Auto-generated catch block  
  10. }  
  11.   }  
 
3java对象转xml(依赖于stax2-api.jar)
Java代码 
  1. XmlMapper xml = new XmlMapper();  
  2. StringWriter sw = new StringWriter();  
  3. xml.writeValue(sw, bean);  
 
4json中取属性值
Java代码 
  1.   /** 
  2.    * 实现将包含单一对象和其他集合的json串中的单一对象转换为对象 
  3.    * @param data :json字符串 
  4.    * @param nodeName :预获取的节点名称 
  5.    * @param cls:节点对应转换的对象 
  6.    * @return 
  7.    */  
  8.   public static Object parseJsonToObject(String data, String nodeName, Class<?> cls) {  
  9. // 用来展现解析Json得到的值  
  10. Object object = null;  
  11. ObjectMapper mapper = new ObjectMapper();  
  12. try {  
  13.     JsonNode rootNode = mapper.readTree(data); // 读取Json  
  14.     // rootNode.path("xx")返回的还是一个JsonNode对象,调用该JsonNode的相应方法,得到键对应的值  
  15.     JsonNode strs = rootNode.path(nodeName);  
  16.     // JsonNode strs1 = rootNode.get(nodeName);  
  17.     if (!"".equals(strs)) {  
  18.         object = mapper.readValue(strs.toString(), cls);  
  19.     }  
  20. catch (Exception e) {  
  21.       
  22. }  
  23. return object;  
  24.   }  
  25.   
  26.   
  27.   /** 
  28.    * 实现获取json串中预获取的节点部分 
  29.    * @param data:json字符串 
  30.    * @param nodeName:预获取的节点名称 
  31.    * @return 
  32.    */  
  33.   public static String parseJson(String data, String nodeName) {  
  34. // 用来展现解析Json得到的值  
  35. StringBuffer buf = new StringBuffer();  
  36. ObjectMapper mapper = new ObjectMapper();  
  37. JsonNode rootNode;  
  38. try {  
  39.     rootNode = mapper.readTree(data);  
  40.     // 读取Json  
  41.     // rootNode.path("xx")返回的还是一个JsonNode对象,调用该JsonNode的相应方法,得到键对应的值  
  42.     String strs = "";  
  43.     if(rootNode.path(nodeName).getClass()==ObjectNode.class){  
  44.         strs = (rootNode.path(nodeName)==null ? "" :rootNode.path(nodeName)).toString();  
  45.     }else{  
  46.         strs = rootNode.path(nodeName).asText();// JsonNode strs1 =rootNode.get(nodeName);  
  47.     }  
  48.     buf.append(strs);  
  49. catch (Exception e) {  
  50.     e.printStackTrace();  
  51. }  
  52. return buf.toString();  
  53.   }  
 
5jsonList
Java代码 
  1.   /** 
  2.    * json转List 
  3.    * @param data:json数据 
  4.    * @param nodeName:预获取的节点名称 
  5.    * @param clazz:节点对应转换的对象 
  6.    * @return 
  7.    */  
  8.   public static <T> List<T> parseJsonToList(String data, String nodeName, Class<?> clazz) {  
  9. List<T> list = null;  
  10. TypeFactory t = TypeFactory.defaultInstance();  
  11. // 指定容器结构和类型(这里是ArrayList和clazz)  
  12. ObjectMapper mapper = new ObjectMapper();  
  13. JsonNode rootNode;  
  14. try {  
  15.     rootNode = mapper.readTree(data);// 读取Json  
  16.     // rootNode.path("xx")返回的还是一个JsonNode对象,调用该JsonNode的相应方法,得到键对应的值  
  17.     if (null != rootNode.get(nodeName)) {  
  18.         JsonNode strs = rootNode.path(nodeName);  
  19.         // JsonNode strs1 = // rootNode.get(nodeName);  
  20.         list = mapper.readValue(strs.toString(),t.constructCollectionType(ArrayList.class, clazz));  
  21.     }  
  22.     // 如果T确定的情况下可以使用下面的方法:  
  23.     // List<T> list = mapper.readValue(jsonVal, new TypeReference<List<T>>() {});  
  24. catch (IOException e) {  
  25. }  
  26. return list;  
  27.   }  
 
三、小结
	1.json中的key必须与与java对象中的field属性对应。
	2.Date是以long类型进行输出的。
  评论这张
 
阅读(577)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016