`
zhyxfancy
  • 浏览: 54072 次
  • 性别: 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;    
    }    
   
}   
分享到:
评论

相关推荐

    cssjquery仿ext样式页面

    EXT的界面风格专业且统一,因此,许多开发者希望通过CSS和jQuery来实现类似的效果,以节省开发时间和成本。 首先,CSS在创建仿EXT样式页面中起到关键作用。EXT的样式通常包括精致的边框、渐变、阴影等,这些都可以...

    EXT2.X API 半中文纯HTML版 无需ARI

    4. **Ajax支持**:EXT2.X 提供了强大的Ajax交互功能,可以轻松实现异步数据请求和响应处理,实现页面无刷新更新。 5. **拖放功能**:内置的拖放API使得用户可以通过简单的配置实现元素之间的拖放操作。 6. **树形...

    Ext4.1.0-chinese:唯一一份完整版的中文文档

    在性能优化方面,EXT4引入了 extents,代替传统的inode直接块指针和间接块指针结构,减少了文件元数据的查找时间,提升了I/O性能。另外,EXT4支持文件预读取和写后缓存,进一步提升读写速度。 JavaScript标签可能...

    EXTJS总结.txt

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

    Linux文件系统类型介绍.pdf

    ext3 的缺点:其最大的缺点是没有现代文件系统所具有的能提高文件数据处理速度和解压的高性能,另外使用 ext3 文件系统时要注意硬盘限额问题,在这个问题解决之前,不推荐在重要的企业应用上采用 ext3+disk quota...

    哈尔滨工业大学2011年操作系统期末考试试题与答案

    另外,通过限制进程执行时间,可以防止某个进程长时间独占CPU,从而提高系统交互性。 4. **设计参数**:为了确保RR算法达到其目标,需要合理设定时间片大小和就绪队列的长度。时间片应足够短以保证快速响应,但也不...

    蓝梦软件BestRecoveryForLinux数据恢复软件

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

    androidutilcodektx kotlin android实用程序代码.zip

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

    linux_fileSystem.zip_linux 文件系统_linux文件系统_sum3xd

    最后,日志型文件系统(如EXT3、EXT4)引入了事务处理机制,保证了系统在异常情况下的数据一致性。当系统崩溃时,通过检查日志可以恢复到一致状态,从而保护文件系统的完整性。 总之,Linux文件系统是一个复杂而...

    linux的文件系统制作

    而索引节点则存储了文件的具体信息,如文件大小、权限、拥有者、创建时间、修改时间等。在制作和移植文件系统时,确保元数据的完整性和一致性是非常重要的。 此外,文件系统还有其权限和安全性设置,如chown、chmod...

    jcifs开发工具

    另外,jcifs可能不支持某些高级特性,如DFS(分布式文件系统)或最新的CIFS扩展。 ### 6. 更新与维护 jcifs的最新版本为jcifs_1.3.16,发布于某个时间点。随着时间推移,开发者应该关注jcifs的更新,以获取新的...

    winhex数据恢复

    另外,WinHex还包括了时间区(timezone.dat)和语言(如Chinese.dat)设置,使得全球用户可以根据自身需求定制界面。同时,如“zlib1.dll”这样的库文件则确保了WinHex在处理压缩数据时的高效性。 安装过程中,...

    KVM性能测试报告

    KVM在资源分配上表现得比较公正,尤其是在处理大量虚拟机运行时,资源利用率高,性能损失小。此外,不同类型的磁盘性能测试显示出了各种磁盘配置对虚拟机性能的影响,并指出ext4虚拟机磁盘类型是性能最优的选择。...

    优化你的Linux系统硬盘.pdf

    Linux主要使用的文件系统是ext2、ext3、ext4等,它们在设计上减少了碎片的产生,但无法完全避免。随着时间的推移,文件系统的碎片化依然会发生,尤其是在繁忙的服务器环境中,这将降低硬盘性能,影响数据的读写速度...

    利用WebSocket完成数据通讯

    ExtJS提供了一些内置的组件和方法,例如`Ext.util.Observer`,可以方便地订阅和处理WebSocket消息。 6. **用户管理**:在实现用户上下线通知时,通常需要维护一个用户连接的管理器。当用户登录时,创建一个...

    罗氏cobas8000的LIS接口开发手册

    另外,手册还提到了处理来自cobas®8100仪器的过多STAT样本造成延迟的有限STAT处理功能。 手册记录的升级不仅仅限于软件层面,还包括对硬件的支持升级。例如,C模块可以支持更多种类的稀释因子,这意味着测试的灵活...

    操作系统文件复制实验.zip

    在Linux系统中,常见的有EXT2、EXT3、EXT4等。这些文件系统规定了文件如何命名、存储、删除和访问。 文件复制是操作系统中最基本的操作之一。在复制文件时,操作系统会创建源文件的一个副本,并将所有数据块复制到...

Global site tag (gtag.js) - Google Analytics