json-lib 日期处理类的一些用法

今天继续研究基于S2SH的网上商城项目,其中涉及了json-lib中日期处理类的一些用法,现在讲解如下:

要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:

1.commons-lang.jar
2.commons-beanutils.jar
3.commons-collections.jar
4.commons-logging.jar
5.ezmorph.jar
6.json-lib-2.2.2-jdk15.jar

我写了以下测试类:

package netSfJson;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;

/*
JsonValueProcessor接口:
每个属性的自定义序列化的基本接口。
http://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/processors/JsonValueProcessor.html
*/
public class DateJsonTest implements JsonValueProcessor {
	
	 public static final String Default_DATE_PATTERN = "yyyy-MM-dd";
	 private DateFormat dateFormat;
	 
	 public DateJsonTest(String datePattern) {  
	    try {  
	        dateFormat = new SimpleDateFormat(datePattern);  
	    } catch (Exception e) {  
	        dateFormat = new SimpleDateFormat(Default_DATE_PATTERN);  
	    }  
    }  
	 
	 //processArrayValue:处理值并返回一个合适的JSON值。
	@Override
	public Object processArrayValue(Object value, JsonConfig jsonConfig) {
		// TODO Auto-generated method stub
		return process(value);
	}
	//processObjectValue:处理值并返回一个合适的JSON值。
	@Override
	public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
		// TODO Auto-generated method stub
		return process(value);
	}
	
	private Object process(Object value) {
		// TODO Auto-generated method stub
		return dateFormat.format((Date) value);
		/*
		format
		将日期格式化为日期/时间字符串。
		*/
	}

	

}


package netSfJson;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

public class testDateJson {

	
	
	/**
	 * @param args
	 * @author Handsome_fan
	 */
	public static void main(String[] args) {
		/*
		 public interface Map<K,V>
		 Map是一个接口
		 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。 
		 */
		/*
		HashMap
		基于哈希表的 Map接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。	
		*/
		//构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap。
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("time", new Date());
		map.put("name", "fyh");
		map.put("age", 22);
		//JsonConfig提供了在对一个Json串和Java对象进行互转时,有选择性的过滤掉一些属性值的方法
		JsonConfig config = new JsonConfig();
		/*
		注册一个JsonValueProcessor[Java--->JSON]
		public void registerJsonValueProcessor(java.lang.Class propertyType,
                              JsonValueProcessor jsonValueProcessor)
        propertyType-要用作键的属性类型
        jsonValueProcessor-进行注册是处理器
		*/
		config.registerJsonValueProcessor(Date.class, new DateJsonTest("G yyyy-MM-dd hh:mm:ss.SS zzz ZZZ w DDD FF EE"));
		/*
		G 纪年术语
		yyyy-MM-dd hh:mm:ss.SS 很简单不用解释
		zzz	一般时区
		ZZZ RFC 822时区
		w 年中的周数
		DDD 年中的天数
		FF 月份中的星期
		EE 星期中的天数
		*/
		JSONObject Obj = JSONObject.fromObject(map, config);
		/*
		JSONObject是名称/值对的无序集合。
		它的外部形式是一个用大括号括起来的字符串,在名称和值之间有冒号,值和名称之间有逗号。
		内部形式是具有用于通过名称访问值的get和opt方法的对象,以及用于通过名称添加或替换值的方法。
		值可以是以下任何类型:Boolean,JSONArray,JSONObject,Number,String或JSONNull对象。
		JSONObject构造函数可以用于将外部表单JSON文本转换为内部表单,其值可以使用get和opt方法检索,或者使用元素和toString方法将值转换为JSON文本。
		get方法能够获取存在的值,如果获取一个不存在的值将会抛出异常
		opt方法返回默认值,而不是抛出异常,因此对于获取可选值很有用。
		API文档:http://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/JSONObject.html
		*/
		/*
		fromObject(Object object, JsonConfig jsonConfig)
		 创建一个JSONObject
		 检查对象类型以调用正确的JSONObject工厂方法。 接受JSON格式的字符串,Maps,DynaBeans和JavaBeans。
		*/
		System.out.println(Obj);
	}

}

运行结果如下:




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值