瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          json

          Posted on 2010-01-20 13:25 瘋狂 閱讀(599) 評(píng)論(0)  編輯  收藏

          轉(zhuǎn)載 
          package com.baiyyy.polabs.util.json;        
                 
          import java.text.ParseException;        
          import java.util.ArrayList;        
          import java.util.Date;        
          import java.util.HashMap;        
          import java.util.Iterator;        
          import java.util.List;        
          import java.util.Map;        
                 
          import com.baiyyy.polabs.util.DateUtil;        
                 
          import net.sf.json.JSONArray;        
          import net.sf.json.JSONObject;        
          import net.sf.json.JsonConfig;        
          import net.sf.json.util.CycleDetectionStrategy;        
                 
          /**     
           * 處理json的工具類,負(fù)責(zé)json數(shù)據(jù)轉(zhuǎn)換成java對(duì)象和java對(duì)象轉(zhuǎn)換成json     
           *      
           * @author yongtree     
           * @date 2008-11-22 上午10:47:13     
           * @version 1.0     
           */       
          public class JsonUtil {        
                 
              /**     
               * 從一個(gè)JSON 對(duì)象字符格式中得到一個(gè)java對(duì)象     
               *      
               * @param jsonString     
               * @param pojoCalss     
               * @return     
               */       
              public static Object getObject4JsonString(String jsonString, Class pojoCalss) {        
                  Object pojo;        
                  JSONObject jsonObject = JSONObject.fromObject(jsonString);        
                  pojo = JSONObject.toBean(jsonObject, pojoCalss);        
                  return pojo;        
              }        
                 
                 
              /**     
               * 從json HASH表達(dá)式中獲取一個(gè)map,改map支持嵌套功能     
               *      
               * @param jsonString     
               * @return     
               */       
              public static Map getMap4Json(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);        
                      valueMap.put(key, value);        
                  }        
                 
                  return valueMap;        
              }        
                 
                 
              /**     
               * 從json數(shù)組中得到相應(yīng)java數(shù)組     
               *      
               * @param jsonString     
               * @return     
               */       
              public static Object[] getObjectArray4Json(String jsonString) {        
                  JSONArray jsonArray = JSONArray.fromObject(jsonString);        
                  return jsonArray.toArray();        
                 
              }        
                 
                 
              /**     
               * 從json對(duì)象集合表達(dá)式中得到一個(gè)java對(duì)象列表     
               *      
               * @param jsonString     
               * @param pojoClass     
               * @return     
               */       
              public static List getList4Json(String jsonString, Class pojoClass) {        
                 
                  JSONArray jsonArray = JSONArray.fromObject(jsonString);        
                  JSONObject jsonObject;        
                  Object pojoValue;        
                 
                  List list = new ArrayList();        
                  for (int i = 0; i < jsonArray.size(); i++) {        
                 
                      jsonObject = jsonArray.getJSONObject(i);        
                      pojoValue = JSONObject.toBean(jsonObject, pojoClass);        
                      list.add(pojoValue);        
                 
                  }        
                  return list;        
                 
              }        
                 
                 
              /**     
               * 從json數(shù)組中解析出java字符串?dāng)?shù)組     
               *      
               * @param jsonString     
               * @return     
               */       
              public static String[] getStringArray4Json(String jsonString) {        
                 
                  JSONArray jsonArray = JSONArray.fromObject(jsonString);        
                  String[] stringArray = new String[jsonArray.size()];        
                  for (int i = 0; i < jsonArray.size(); i++) {        
                      stringArray[i] = jsonArray.getString(i);        
                 
                  }        
                 
                  return stringArray;        
              }        
                 
                 
              /**     
               * 從json數(shù)組中解析出javaLong型對(duì)象數(shù)組     
               *      
               * @param jsonString     
               * @return     
               */       
              public static Long[] getLongArray4Json(String jsonString) {        
                 
                  JSONArray jsonArray = JSONArray.fromObject(jsonString);        
                  Long[] longArray = new Long[jsonArray.size()];        
                  for (int i = 0; i < jsonArray.size(); i++) {        
                      longArray[i] = jsonArray.getLong(i);        
                 
                  }        
                  return longArray;        
              }        
                 
                 
              /**     
               * 從json數(shù)組中解析出java Integer型對(duì)象數(shù)組     
               *      
               * @param jsonString     
               * @return     
               */       
              public static Integer[] getIntegerArray4Json(String jsonString) {        
                 
                  JSONArray jsonArray = JSONArray.fromObject(jsonString);        
                  Integer[] integerArray = new Integer[jsonArray.size()];        
                  for (int i = 0; i < jsonArray.size(); i++) {        
                      integerArray[i] = jsonArray.getInt(i);        
                 
                  }        
                  return integerArray;        
              }        
                 
              /**     
               * 從json數(shù)組中解析出java Date 型對(duì)象數(shù)組,使用本方法必須保證     
               *      
               * @param jsonString     
               * @return     
               * @throws ParseException     
               */       
              public static Date[] getDateArray4Json(String jsonString, String DataFormat)        
                      throws ParseException {        
                 
                  JSONArray jsonArray = JSONArray.fromObject(jsonString);        
                  Date[] dateArray = new Date[jsonArray.size()];        
                  String dateString;        
                  Date date;        
                 
                  for (int i = 0; i < jsonArray.size(); i++) {        
                      dateString = jsonArray.getString(i);        
                      date = DateUtil.parseDate(dateString, DataFormat);        
                      dateArray[i] = date;        
                 
                  }        
                  return dateArray;        
              }        
                 
                 
              /**     
               * 從json數(shù)組中解析出java Integer型對(duì)象數(shù)組     
               *      
               * @param jsonString     
               * @return     
               */       
              public static Double[] getDoubleArray4Json(String jsonString) {        
                 
                  JSONArray jsonArray = JSONArray.fromObject(jsonString);        
                  Double[] doubleArray = new Double[jsonArray.size()];        
                  for (int i = 0; i < jsonArray.size(); i++) {        
                      doubleArray[i] = jsonArray.getDouble(i);        
                 
                  }        
                  return doubleArray;        
              }        
                 
                 
              /**     
               * 將java對(duì)象轉(zhuǎn)換成json字符串     
               *      
               * @param javaObj     
               * @return     
               */       
              public static String getJsonString4JavaPOJO(Object javaObj) {        
                 
                  JSONObject json;        
                  json = JSONObject.fromObject(javaObj);        
                  return json.toString();        
                 
              }        
                 
              /**     
               * 將java對(duì)象轉(zhuǎn)換成json字符串,并設(shè)定日期格式     
               *      
               * @param javaObj     
               * @param dataFormat     
               * @return     
               */       
              public static String getJsonString4JavaPOJO(Object javaObj,        
                      String dataFormat) {        
                 
                  JSONObject json;        
                  JsonConfig jsonConfig = configJson(dataFormat);        
                  json = JSONObject.fromObject(javaObj, jsonConfig);        
                  return json.toString();        
                 
              }        
                 
              /**     
               * JSON 時(shí)間解析器具     
               *      
               * @param datePattern     
               * @return     
               */       
              public static JsonConfig configJson(String datePattern) {        
                  JsonConfig jsonConfig = new JsonConfig();        
                  jsonConfig.setExcludes(new String[] { "" });        
                  jsonConfig.setIgnoreDefaultExcludes(false);        
                  jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);        
                  jsonConfig.registerJsonValueProcessor(Date.class,        
                          new JsonDateValueProcessor(datePattern));        
                 
                  return jsonConfig;        
              }        
                 
                 
              /**     
               * 除去不想生成的字段(特別適合去掉級(jí)聯(lián)的對(duì)象)+時(shí)間轉(zhuǎn)換     
               * @param excludes 除去不想生成的字段     
               * @param datePattern     
               * @return     
               */       
              public static JsonConfig configJson(String[] excludes, String datePattern) {        
                  JsonConfig jsonConfig = new JsonConfig();        
                  jsonConfig.setExcludes(excludes);        
                  jsonConfig.setIgnoreDefaultExcludes(true);        
                  jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);        
                  jsonConfig.registerJsonValueProcessor(Date.class,        
                          new JsonDateValueProcessor(datePattern));        
                 
                  return jsonConfig;        
              }        
                 
          }   
           
           
          package com.baiyyy.polabs.util.json;        
                 
          import java.text.SimpleDateFormat;        
          import java.util.Date;        
                 
          import net.sf.json.JsonConfig;        
          import net.sf.json.processors.JsonValueProcessor;        
                 
          /**     
           *      
           * @author yongtree     
           * @date 2008-11-22 上午10:54:19     
           * @version 1.0     
           */       
          public class JsonDateValueProcessor implements JsonValueProcessor {           
                        
              private String format = "yyyy-MM-dd HH:mm:ss";           
                    
              public JsonDateValueProcessor() {           
                    
              }           
                    
              public JsonDateValueProcessor(String format) {           
                  this.format = format;           
              }           
                    
              public Object processArrayValue(Object value, JsonConfig jsonConfig) {           
                  String[] obj = {};           
                  if (value instanceof Date[]) {           
                      SimpleDateFormat sf = new SimpleDateFormat(format);           
                      Date[] dates = (Date[]) value;           
                      obj = new String[dates.length];           
                      for (int i = 0; i < dates.length; i++) {           
                          obj[i] = sf.format(dates[i]);           
                      }           
                  }           
                  return obj;           
              }           
                    
              public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {           
                  if (value instanceof Date) {           
                      String str = new SimpleDateFormat(format).format((Date) value);           
                      return str;           
                  }           
                  return value == null ? null : value.toString();           
              }           
                    
              public String getFormat() {           
                  return format;           
              }           
                    
              public void setFormat(String format) {           
                  this.format = format;           
              }           
                    
          }       

          本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/cyjchao/archive/2009/07/31/4397894.aspx


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 五常市| 郑州市| 公主岭市| 湘潭县| 天峨县| 乐亭县| 道孚县| 乌鲁木齐市| 大宁县| 林周县| 鲁甸县| 莫力| 馆陶县| 平顺县| 巩留县| 安图县| 卢龙县| 故城县| 称多县| 清远市| 沂水县| 东光县| 碌曲县| 金阳县| 马鞍山市| 开鲁县| 汉中市| 宣城市| 新营市| 登封市| 花莲县| 徐州市| 随州市| 宁武县| 浦城县| 罗江县| 涪陵区| 浪卡子县| 柯坪县| 稷山县| 铜陵市|