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

北漂的小羊

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

 
 
 

日志

 
 
关于我

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

网易考拉推荐

一个java处理JSON格式数据的通用类  

2012-11-12 17:19:35|  分类: JAVA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 转自:胖公猴的博客

在这个工具类中,包含以下方法实现:

1.JSON转java对象

2.JSON转Map

3.JSON转java数组形式

4.JSON转java对象列表

5.JSON转字符串数组

6.JSON转Long型数组

7.JSON转Integer型数组

8.JSON转Java Date型数组

9.JSON转Double型数组

10.JSON转字符串

11.JSON转字符串,并设定日期格式


进入需要在项目中用java处理json格式的数据,因此封装了一个class,现将这个class共享出来和大家分享

 Java代码 

  1.   /** 
  2.  * Copyright (c) linkwise 2007-2009 corporation.   
  3.  * All rights reserved 
  4. */  
  5. package com.linghui.common.util;  
  6.   
  7. import java.util.ArrayList;  
  8. import java.util.Date;  
  9. import java.util.HashMap;  
  10. import java.util.Iterator;  
  11. import java.util.List;  
  12. import java.util.Map;  
  13.   
  14. import net.sf.json.JSONArray;  
  15. import net.sf.json.JSONObject;  
  16. import net.sf.json.JsonConfig;  
  17. import net.sf.json.util.CycleDetectionStrategy;  
  18.   
  19. import com.linghui.common.util.DateUtil;  
  20. import com.linghui.common.util.jsonutil.DateJsonValueProcessor;  
  21.   
  22. /** 
  23.  * @author </br> <a href="mailto:fx19800215@163.com"> robert.feng</a> 
  24.  * 
  25. */  
  26. public class JsonUtil {  
  27.   
  28.     /** 
  29.      * 从一个JSON 对象字符格式中得到一个java对象 
  30.      * @param jsonString 
  31.      * @param pojoCalss 
  32.      * @return 
  33.      */  
  34.     public static Object getObject4JsonString(String jsonString,Class pojoCalss){  
  35.         Object pojo;  
  36.         JSONObject jsonObject = JSONObject.fromObject( jsonString );    
  37.         pojo = JSONObject.toBean(jsonObject,pojoCalss);  
  38.         return pojo;  
  39.     }  
  40.       
  41.       
  42.       
  43.     /** 
  44.      * 从json HASH表达式中获取一个map,改map支持嵌套功能 
  45.      * @param jsonString 
  46.      * @return 
  47.      */  
  48.     public static Map getMap4Json(String jsonString){  
  49.         JSONObject jsonObject = JSONObject.fromObject( jsonString );    
  50.         Iterator  keyIter = jsonObject.keys();  
  51.         String key;  
  52.         Object value;  
  53.         Map valueMap = new HashMap();  
  54.   
  55.         while( keyIter.hasNext())  
  56.         {  
  57.             key = (String)keyIter.next();  
  58.             value = jsonObject.get(key);  
  59.             valueMap.put(key, value);  
  60.         }  
  61.           
  62.         return valueMap;  
  63.     }  
  64.       
  65.       
  66.     /** 
  67.      * 从json数组中得到相应java数组 
  68.      * @param jsonString 
  69.      * @return 
  70.      */  
  71.     public static Object[] getObjectArray4Json(String jsonString){  
  72.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  73.         return jsonArray.toArray();  
  74.           
  75.     }  
  76.       
  77.       
  78.     /** 
  79.      * 从json对象集合表达式中得到一个java对象列表 
  80.      * @param jsonString 
  81.      * @param pojoClass 
  82.      * @return 
  83.      */  
  84.     public static List getList4Json(String jsonString, Class pojoClass){  
  85.           
  86.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  87.         JSONObject jsonObject;  
  88.         Object pojoValue;  
  89.           
  90.         List list = new ArrayList();  
  91.         for ( int i = 0 ; i<jsonArray.size(); i++){  
  92.               
  93.             jsonObject = jsonArray.getJSONObject(i);  
  94.             pojoValue = JSONObject.toBean(jsonObject,pojoClass);  
  95.             list.add(pojoValue);  
  96.               
  97.         }  
  98.         return list;  
  99.   
  100.     }  
  101.       
  102.     /** 
  103.      * 从json数组中解析出java字符串数组 
  104.      * @param jsonString 
  105.      * @return 
  106.      */  
  107.     public static String[] getStringArray4Json(String jsonString){  
  108.           
  109.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  110.         String[] stringArray = new String[jsonArray.size()];  
  111.         forint i = 0 ; i<jsonArray.size() ; i++ ){  
  112.             stringArray[i] = jsonArray.getString(i);  
  113.               
  114.         }  
  115.           
  116.         return stringArray;  
  117.     }  
  118.       
  119.     /** 
  120.      * 从json数组中解析出javaLong型对象数组 
  121.      * @param jsonString 
  122.      * @return 
  123.      */  
  124.     public static Long[] getLongArray4Json(String jsonString){  
  125.           
  126.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  127.         Long[] longArray = new Long[jsonArray.size()];  
  128.         forint i = 0 ; i<jsonArray.size() ; i++ ){  
  129.             longArray[i] = jsonArray.getLong(i);  
  130.               
  131.         }  
  132.         return longArray;  
  133.     }  
  134.       
  135.     /** 
  136.      * 从json数组中解析出java Integer型对象数组 
  137.      * @param jsonString 
  138.      * @return 
  139.      */  
  140.     public static Integer[] getIntegerArray4Json(String jsonString){  
  141.           
  142.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  143.         Integer[] integerArray = new Integer[jsonArray.size()];  
  144.         forint i = 0 ; i<jsonArray.size() ; i++ ){  
  145.             integerArray[i] = jsonArray.getInt(i);  
  146.               
  147.         }  
  148.         return integerArray;  
  149.     }  
  150.       
  151.     /** 
  152.      * 从json数组中解析出java Date 型对象数组,使用本方法必须保证 
  153.      * @param jsonString 
  154.      * @return 
  155.      */  
  156.     public static Date[] getDateArray4Json(String jsonString,String DataFormat){  
  157.           
  158.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  159.         Date[] dateArray = new Date[jsonArray.size()];  
  160.         String dateString;  
  161.         Date date;  
  162.           
  163.         forint i = 0 ; i<jsonArray.size() ; i++ ){  
  164.             dateString = jsonArray.getString(i);  
  165.             date = DateUtil.stringToDate(dateString, DataFormat);  
  166.             dateArray[i] = date;  
  167.               
  168.         }  
  169.         return dateArray;  
  170.     }  
  171.       
  172.     /** 
  173.      * 从json数组中解析出java Double型对象数组 
  174.      * @param jsonString 
  175.      * @return 
  176.      */  
  177.     public static Double[] getDoubleArray4Json(String jsonString){  
  178.           
  179.         JSONArray jsonArray = JSONArray.fromObject(jsonString);  
  180.         Double[] doubleArray = new Double[jsonArray.size()];  
  181.         forint i = 0 ; i<jsonArray.size() ; i++ ){  
  182.             doubleArray[i] = jsonArray.getDouble(i);  
  183.               
  184.         }  
  185.         return doubleArray;  
  186.     }  
  187.       
  188.       
  189.     /** 
  190.      * 将java对象转换成json字符串 
  191.      * @param javaObj 
  192.      * @return 
  193.      */  
  194.     public static String getJsonString4JavaPOJO(Object javaObj){  
  195.           
  196.         JSONObject json;  
  197.         json = JSONObject.fromObject(javaObj);  
  198.         return json.toString();  
  199.           
  200.     }  
  201.       
  202.       
  203.       
  204.       
  205.     /** 
  206.      * 将java对象转换成json字符串,并设定日期格式 
  207.      * @param javaObj 
  208.      * @param dataFormat 
  209.      * @return 
  210.      */  
  211.     public static String getJsonString4JavaPOJO(Object javaObj , String dataFormat){  
  212.           
  213.         JSONObject json;  
  214.         JsonConfig jsonConfig = configJson(dataFormat);  
  215.         json = JSONObject.fromObject(javaObj,jsonConfig);  
  216.         return json.toString();  
  217.           
  218.           
  219.     }  
  220.       
  221.       
  222.       
  223.     /** 
  224.      * @param args 
  225.      */  
  226.     public static void main(String[] args) {  
  227.         // TODO 自动生成方法存根  
  228.   
  229.     }  
  230.       
  231.     /** 
  232.      * JSON 时间解析器具 
  233.      * @param datePattern 
  234.      * @return 
  235.      */  
  236.     public static JsonConfig configJson(String datePattern) {     
  237.             JsonConfig jsonConfig = new JsonConfig();     
  238.             jsonConfig.setExcludes(new String[]{""});     
  239.             jsonConfig.setIgnoreDefaultExcludes(false);     
  240.             jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);     
  241.             jsonConfig.registerJsonValueProcessor(Date.class,     
  242.                 new DateJsonValueProcessor(datePattern));     
  243.             
  244.             return jsonConfig;     
  245.         }    
  246.       
  247.     /** 
  248.      *  
  249.      * @param excludes 
  250.      * @param datePattern 
  251.      * @return 
  252.      */  
  253.     public static JsonConfig configJson(String[] excludes,     
  254.             String datePattern) {     
  255.             JsonConfig jsonConfig = new JsonConfig();     
  256.             jsonConfig.setExcludes(excludes);     
  257.             jsonConfig.setIgnoreDefaultExcludes(false);     
  258.             jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);     
  259.             jsonConfig.registerJsonValueProcessor(Date.class,     
  260.                 new DateJsonValueProcessor(datePattern));     
  261.             
  262.             return jsonConfig;     
  263.         }    
  264.   
  265. }  
  266.   
  267.    
  268.   
  269.    
  270.   
  271. /** 
  272.  * linkwise 
  273.  */  
  274. package com.linghui.common.util.jsonutil;  
  275.   
  276. import java.text.DateFormat;  
  277. import java.text.SimpleDateFormat;  
  278. import java.util.Date;  
  279.   
  280. import net.sf.json.JsonConfig;  
  281. import net.sf.json.processors.JsonValueProcessor;  
  282.   
  283.   
  284.   
  285. /** 
  286.  *  @author </br> <a href="mailto:fx19800215@163.com"> robert.feng</a> 
  287.  * 
  288.  */  
  289. public class DateJsonValueProcessor implements JsonValueProcessor {  
  290.   
  291.       
  292.     public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";     
  293.     private DateFormat dateFormat;     
  294.   
  295.       
  296.       
  297.     /**   
  298.      * 构造方法.   
  299.      *   
  300.      * @param datePattern 日期格式   
  301.      */    
  302.     public DateJsonValueProcessor(String datePattern) {     
  303.             
  304.         ifnull == datePattern )  
  305.             dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);    
  306.         else  
  307.             dateFormat = new SimpleDateFormat(datePattern);   
  308.           
  309.     }     
  310.   
  311.       
  312.       
  313.     /* (非 Javadoc) 
  314.      * @see net.sf.json.processors.JsonValueProcessor#processArrayValue(java.lang.Object, net.sf.json.JsonConfig) 
  315.      */  
  316.     public Object processArrayValue(Object arg0, JsonConfig arg1) {  
  317.         // TODO 自动生成方法存根  
  318.         return process(arg0);     
  319.     }  
  320.   
  321.     /* (非 Javadoc) 
  322.      * @see net.sf.json.processors.JsonValueProcessor#processObjectValue(java.lang.String, java.lang.Object, net.sf.json.JsonConfig) 
  323.      */  
  324.     public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {  
  325.         // TODO 自动生成方法存根  
  326.         return process(arg1);     
  327.     }  
  328.       
  329.     private Object process(Object value) {     
  330.         return dateFormat.format((Date) value);     
  331.     }     
  332.   
  333.   
  334. }  
  评论这张
 
阅读(605)| 评论(0)
推荐 转载

历史上的今天

评论

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

页脚

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