`
zhyxfancy
  • 浏览: 52150 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ext 时间的另外处理

阅读更多
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[i] = 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[i] = 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[i] = 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[i] = 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[i] = 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; 
    } 
 


Java代码
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;    
    }    
   
}   
分享到:
评论

相关推荐

    EXTJS总结.txt

    一、获取元素(Getting Elements) 1.Ext.get var el = Ext.get('myElementId');//获取元素,等同于document.getElementById('myElementId');//会缓存 2. Ext.fly ...为此元素加入一个事件处理函数...

    蓝梦软件BestRecoveryForLinux数据恢复软件

    更好的支持格式化恢复:格式化可能会造成文件覆盖,本软件作了特殊处理,可以很容易找到没有被覆盖的目录结构,再与文件类型提取功能结合,达到非常完美的恢复。 更有效的提取部分文件覆盖的恢复:文件被删除(继续...

    androidutilcodektx kotlin android实用程序代码.zip

    最新版本将第一时间用在我的另外两个开源项目,wanandroid 和 Box,欢迎关注 ! APIS (keep updating...) 权限相关 [Demo] ActivityExt [Demo] AppExt AesExt [Demo] CommonExt Constants DrawableExt ...

    linux教程——很使用的那种

    另外linux在每个分区都有保留块,这是专门留给root用户及其所属组使用,别的用户是无法使用的,一般为总数据块的5%,但是如果你的磁盘大的话,就显的浪费了。 mkfs.ext3 -b 2046 -m 2 /dev/hda5。格式化并设置数据块为2...

    WinHex15.6 绿色软件,且收集了很多模板

    另外该版本收集了很多现在有模板,不用你再花费时间去寻找了。 这是网上收集的介绍: WinHex 是一款以通用的 16 进制编辑器为核心,专门用来对付计算机取证、数据恢复、低级数据处理、以及 IT 安全性、各种日常紧急...

    Lephone Loczlize Plus 1.06 中文免费版 PE 字串替换器.zip

    另外,所有对可执行文件进行的替换工作,都不能进行长于源字串的替换,如果修改后的字串长于源字串,本程序将自动剪裁以便和源字串长度相同。如果短于源字串,将会以十六进制数“00”或空格(在“替换字串”界面上...

    岳维功 ortp-realease.pdf

    ext mask pos inc ssrc candidate inc same ssrc count Iw recv pL cha on pay load tyre changed Telep on network error signa events allocator tp Sessiorlisu lticast ttl multicast loopback data Lng current...

    入门学习Linux常用必会60个命令实例详解doc/txt

    举例而言,如要挂载下列5个设备,其执行指令可能如下 (假设都是Linux的ext2系统,如果是Windows XX请将ext2改成vfat): 软盘 ===&gt;mount -t ext2 /dev/fd0 /mnt/floppy cdrom ===&gt;mount -t iso9660 /dev/hdc /mnt/...

    网络管理员试题(八)

    的信息,这些头信息包含有供接收栈的对等层阅读和处理的控制信息。 A.正确 B.错误 正确答案B 602.下面哪种说法适用于客户机/服务器(或者基于服务器)的网络,但是不适用于对等网络? A.客户机/服务器网络通常...

    计算机应用技术(实用手册)

    这个项目可控制DRAM读取指令与数据成为真正可用的时间之间的延迟时间。较低的CAS周期能减少内存的潜伏周期以提高内存的工作效率。因此只要能够稳定运行操作系统,我们应当尽量把CAS参数调低,从而提高内存的运行速度...

    Chemex资产管理运维平台-PHP

    各服务状态实时展示,包括异常内容,发生时间和恢复时间。 盘点进度展示。 多国语言 目前暂时最优支持中文简体,后续会发布英文语言,同时会支持语言切换。 私有化部署 是的,只需要一个 LNMP 环境,就可以无限制的...

    WinHex V15.1 和 V16.7 汉化版

    - 支持 FAT,NTFS,Ext2/3/4,ReiserFS,Reiser4,UFS,CDFS,UDF 文件系统 - 支持对磁盘阵列 RAID 系统和动态磁盘的重组、分析和数据恢复 - 多种数据恢复技术 - RAM编辑器,可以编辑物理内存和其他进程的虚拟内存 - 可分析...

    Linux操作系统基础教程

    关於字串处理的指令.....................................................................................................17 七. 网路上查询状况的指令.......................................................

    Excel数据操纵-jar包-jxl.jar

     (很大总是不能很好的加载,我想补充一下:把你下载好的JXL.JAR包放入D:\JAVA\jre\lib\ext中(我的是JDK1.6)就OK了。我相信在配置TOMCAT时也需要把相关的三个包放到这里面。)  基本操作  一、创建文件  拟...

    通过java操作excel表格的工具类库jxl

    另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。  搭建环境  将下载后的文件解包,得到JXL.JAR,放入classpath,安装就完成了。如果包不能正常的加载,可以把你下载好的JXL.JAR包放入D...

Global site tag (gtag.js) - Google Analytics