Chinaunix首页 | 论坛 | 博客
  • 博客访问: 640205
  • 博文数量: 233
  • 博客积分: 2221
  • 博客等级: 大尉
  • 技术积分: 3184
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-16 14:01
个人简介

瓜瓜派的瓜瓜

文章分类

全部博文(233)

文章存档

2013年(28)

2012年(197)

2011年(8)

分类: IT业界

2012-01-09 16:04:26


  • 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的工具类,负责json数据转换成java对象和java对象转换成json     
  • *      
  • * @author yongtree     
  • * @date 2008-11-22 上午10:47:13     
  • * @version 1.0     
  • */
  • public
    class JsonUtil {        
  •     /**     
  •      * 从一个JSON 对象字符格式中得到一个java对象     
  •      *      
  •      * @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表达式中获取一个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数组中得到相应java数组     
  •      *      
  •      * @param jsonString     
  •      * @return     
  •      */
  •     public
    static Object[] getObjectArray4Json(String jsonString) {        
  •         JSONArray jsonArray = JSONArray.fromObject(jsonString);        
  •         return jsonArray.toArray();        
  •     }        
  •     /**     
  •      * 从json对象集合表达式中得到一个java对象列表     
  •      *      
  •      * @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数组中解析出java字符串数组     
  •      *      
  •      * @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 = jsonArray.getString(i);        
  •         }        
  •         return stringArray;        
  •     }        
  •     /**     
  •      * 从json数组中解析出javaLong型对象数组     
  •      *      
  •      * @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 = jsonArray.getLong(i);        
  •         }        
  •         return longArray;        
  •     }        
  •     /**     
  •      * 从json数组中解析出java Integer型对象数组     
  •      *      
  •      * @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 = jsonArray.getInt(i);        
  •         }        
  •         return integerArray;        
  •     }        
  •     /**     
  •      * 从json数组中解析出java Date 型对象数组,使用本方法必须保证     
  •      *      
  •      * @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 = date;        
  •         }        
  •         return dateArray;        
  •     }        
  •     /**     
  •      * 从json数组中解析出java Integer型对象数组     
  •      *      
  •      * @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 = jsonArray.getDouble(i);        
  •         }        
  •         return doubleArray;        
  •     }        
  •     /**     
  •      * 将java对象转换成json字符串     
  •      *      
  •      * @param javaObj     
  •      * @return     
  •      */
  •     public
    static String getJsonString4JavaPOJO(Object javaObj) {        
  •         JSONObject json;        
  •         json = JSONObject.fromObject(javaObj);        
  •         return json.toString();        
  •     }        
  •     /**     
  •      * 将java对象转换成json字符串,并设定日期格式     
  •      *      
  •      * @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 时间解析器具     
  •      *      
  •      * @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;        
  •     }        
  •     /**     
  •      * 除去不想生成的字段(特别适合去掉级联的对象)+时间转换     
  •      * @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 = sf.format(dates);           
  •             }           
  •         }           
  •         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;           
  •     }           
  • }        
阅读(751) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~