Json与javaBean之间的转换工具类

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
 
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
 
/**
  * Json与javaBean之间的转换工具类
  *
  * @author 晚风工作室 www.soservers.com
  * @version 20111221
  *
  * {@code   现使用json-lib组件实现
  *          需要
  *              json-lib-2.4-jdk15.jar
  *              ezmorph-1.0.6.jar
  *              commons-collections-3.1.jar
  *              commons-lang-2.0.jar
  *          支持
  * }
  */
public class JsonPluginsUtil {
 
 
     /** 
      * 从一个JSON 对象字符格式中得到一个java对象 
      *  
      * @param jsonString 
      * @param beanCalss 
      * @return 
      */
     @SuppressWarnings ( "unchecked" )
     public static <T> T jsonToBean(String jsonString, Class<T> beanCalss) {
         
         JSONObject jsonObject = JSONObject.fromObject(jsonString);
         T bean = (T) JSONObject.toBean(jsonObject, beanCalss);
         
         return bean;
         
     }
 
     /** 
      * 将java对象转换成json字符串 
      *
      * @param bean 
      * @return 
      */
     public static String beanToJson(Object bean) {
 
         JSONObject json = JSONObject.fromObject(bean);
         
         return json.toString();
 
     }
     
     /** 
      * 将java对象转换成json字符串 
      *
      * @param bean 
      * @return 
      */
     public static String beanToJson(Object bean, String[] _nory_changes, boolean nory) {
 
         JSONObject json = null ;
         
         if (nory){ //转换_nory_changes里的属性
             
             Field[] fields = bean.getClass().getDeclaredFields();
             String str = "" ;
             for (Field field : fields){
//              System.out.println(field.getName());
                 str+=( ":" +field.getName());
             }
             fields = bean.getClass().getSuperclass().getDeclaredFields();
             for (Field field : fields){
//              System.out.println(field.getName());
                 str+=( ":" +field.getName());
             }
             str+= ":" ;
             for (String s : _nory_changes){
                 str = str.replace( ":" +s+ ":" , ":" );
             }
             json = JSONObject.fromObject(bean,configJson(str.split( ":" )));
             
         } else { //转换除了_nory_changes里的属性
             
 
             
             json = JSONObject.fromObject(bean,configJson(_nory_changes));
         }
         
         
         
         return json.toString();
 
     }
      private static JsonConfig configJson(String[] excludes) {  
 
                 JsonConfig jsonConfig = new JsonConfig();  
 
                 jsonConfig.setExcludes(excludes);  
//
                 jsonConfig.setIgnoreDefaultExcludes( false );  
//
//              jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);  
 
//              jsonConfig.registerJsonValueProcessor(Date.class,  
//
//                  new DateJsonValueProcessor(datePattern));  
 
               
 
                 return jsonConfig;  
 
            
 
 
 
 
 
     /**
      * 将java对象List集合转换成json字符串 
      * @param beans
      * @return
      */
     @SuppressWarnings ( "unchecked" )
     public static String beanListToJson(List beans) {
         
         StringBuffer rest = new StringBuffer();
         
         rest.append( "[" );
         
         int size = beans.size();
         
         for ( int i = 0 ; i < size; i++) {
             
             rest.append(beanToJson(beans.get(i))+((i<size- 1 )? "," : "" ));
 
         }
         
         rest.append( "]" );
         
         return rest.toString();
 
     }
     
     /**
      *
      * @param beans
      * @param _no_changes
      * @return
      */
     @SuppressWarnings ( "unchecked" )
     public static String beanListToJson(List beans, String[] _nory_changes, boolean nory) {
         
         StringBuffer rest = new StringBuffer();
         
         rest.append( "[" );
         
         int size = beans.size();
         
         for ( int i = 0 ; i < size; i++) {
             try {
                 rest.append(beanToJson(beans.get(i),_nory_changes,nory));
                 if (i<size- 1 ){
                     rest.append( "," );
                 }
             } catch (Exception e){
                 e.printStackTrace();
             }
         }
         
         rest.append( "]" );
         
         return rest.toString();
 
     }
 
     /** 
      * 从json HASH表达式中获取一个map,改map支持嵌套功能 
      *
      * @param jsonString 
      * @return 
      */
     @SuppressWarnings ({ "unchecked" })
     public static Map jsonToMap(String jsonString) {
         
         JSONObject jsonObject = JSONObject.fromObject(jsonString);
         Iterator keyIter = jsonObject.keys();
         String key;
         Object value;
         Map valueMap = new HashMap();
 
         while (keyIter.hasNext()) {
             
             key = (String) keyIter.next();
             value = jsonObject.get(key).toString();
             valueMap.put(key, value);
             
         }
 
         return valueMap;
     }
     
     /**
      * map集合转换成json格式数据
      * @param map
      * @return
      */
     public static String mapToJson(Map<String, ?> map, String[] _nory_changes, boolean nory){
         
         String s_json = "{" ;
         
          Set<String> key = map.keySet();
          for (Iterator<?> it = key.iterator(); it.hasNext();) {
              String s = (String) it.next();
              if (map.get(s) == null ){
                  
              } else if (map.get(s) instanceof List<?>){
                  s_json+=(s+ ":" +JsonPluginsUtil.beanListToJson((List<?>)map.get(s), _nory_changes, nory));
                 
              } else {
                  JSONObject json = JSONObject.fromObject(map);
                  s_json += (s+ ":" +json.toString());;
              }
              
              if (it.hasNext()){
                  s_json+= "," ;
              }
         }
 
          s_json+= "}" ;
         return s_json;
     }
 
     /** 
      * 从json数组中得到相应java数组 
      *
      * @param jsonString 
      * @return 
      */
     public static Object[] jsonToObjectArray(String jsonString) {
         
         JSONArray jsonArray = JSONArray.fromObject(jsonString);
         
         return jsonArray.toArray();
 
     }
     
     public static String listToJson(List<?> list) {
         
         JSONArray jsonArray = JSONArray.fromObject(list);
         
         return jsonArray.toString();
 
     }
 
     /** 
      * 从json对象集合表达式中得到一个java对象列表 
      *
      * @param jsonString 
      * @param beanClass 
      * @return 
      */
     @SuppressWarnings ( "unchecked" )
     public static <T> List<T> jsonToBeanList(String jsonString, Class<T> beanClass) {
 
         JSONArray jsonArray = JSONArray.fromObject(jsonString);
         JSONObject jsonObject;
         T bean;
         int size = jsonArray.size();
         List<T> list = new ArrayList<T>(size);
 
         for ( int i = 0 ; i < size; i++) {
 
             jsonObject = jsonArray.getJSONObject(i);
             bean = (T) JSONObject.toBean(jsonObject, beanClass);
             list.add(bean);
 
         }
         
         return list;
 
     }
 
     /** 
      * 从json数组中解析出java字符串数组 
      *
      * @param jsonString 
      * @return 
      */
     public static String[] jsonToStringArray(String jsonString) {
 
         JSONArray jsonArray = JSONArray.fromObject(jsonString);
         String[] stringArray = new String[jsonArray.size()];
         int size = jsonArray.size();
 
         for ( int i = 0 ; i < size; i++) {
 
             stringArray[i] = jsonArray.getString(i);
 
         }
 
         return stringArray;
     }
 
     /** 
      * 从json数组中解析出javaLong型对象数组 
      *
      * @param jsonString 
      * @return 
      */
     public static Long[] jsonToLongArray(String jsonString) {
 
         JSONArray jsonArray = JSONArray.fromObject(jsonString);
         int size = jsonArray.size();
         Long[] longArray = new Long[size];
         
         for ( int i = 0 ; i < size; i++) {
             
             longArray[i] = jsonArray.getLong(i);
 
         }
         
         return longArray;
         
     }
 
     /** 
      * 从json数组中解析出java Integer型对象数组 
      *
      * @param jsonString 
      * @return 
      */
     public static Integer[] jsonToIntegerArray(String jsonString) {
 
         JSONArray jsonArray = JSONArray.fromObject(jsonString);
         int size = jsonArray.size();
         Integer[] integerArray = new Integer[size];
         
         for ( int i = 0 ; i < size; i++) {
             
             integerArray[i] = jsonArray.getInt(i);
 
         }
         
         return integerArray;
         
     }
 
     /** 
      * 从json数组中解析出java Double型对象数组 
      *
      * @param jsonString 
      * @return 
      */
     public static Double[] jsonToDoubleArray(String jsonString) {
 
         JSONArray jsonArray = JSONArray.fromObject(jsonString);
         int size = jsonArray.size();
         Double[] doubleArray = new Double[size];
         
         for ( int i = 0 ; i < size; i++) {
             
             doubleArray[i] = jsonArray.getDouble(i);
 
         }
         
         return doubleArray;
         
     }
 
}

2. [文件] json-lib-2.1.jar ~ 122KB     下载(692)     

3. [文件] ezmorph-1.0.6.jar ~ 84KB     下载(589)     [全屏预览]

4. [文件] commons-collections-3.2.jar ~ 558KB     下载(598)     

5. [文件] commons-lang-2.5.jar ~ 273KB     下载(584)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值