亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

json工具類

張軍 8014 0

json工具類

/**
 * @Description  JsonUtil.java
 * @author 張軍
 * @date 2016-7-6 下午1:29:18
 * @version V1.0
 */
package zj.json;

import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Date;

import zj.date.bean.DateTime;
import zj.json.bean.DateFormatSerializer;
import zj.json.bean.ToJSONString;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.NameFilter;
import com.alibaba.fastjson.serializer.PropertyFilter;
import com.alibaba.fastjson.serializer.PropertyPreFilter;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializeWriter;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.serializer.ValueFilter;

/**
 * json工具類
 * 
 * @author 張軍
 * @date 2016-7-6 下午1:29:18
 * @version V1.0
 * @author SHNKCS 張軍 {@link  <a target=_blank href="http://www.eyofj.com">張軍個人網站</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>}
 */
public class JsonUtil implements Serializable {
	private static final long serialVersionUID = 1L;
	public static SerializeConfig MAPPING = new SerializeConfig();
	static {
		register();
	}

	/**
	 * 轉換為json字符串
	 * 
	 * @param value
	 *            轉換對象值
	 * @author 張軍
	 * @date 2015-11-03 21:59:00
	 * @modifiyNote
	 * @version 1.0
	 * @return
	 */
	public static String toJSONString(Object value) {
		return toJSONString(value, null);
	}

	/**
	 * 轉換為json字符串
	 * 
	 * @param object
	 *            轉換對象值
	 * @param toJson
	 *            參數對象
	 * @author 張軍
	 * @date 2015-11-03 21:59:00
	 * @modifiyNote
	 * @version 1.0
	 * @return
	 */
	public static final String toJSONString(Object object, ToJSONString toJson) {
		if (toJson == null) {
			return JSON.toJSONString(object, MAPPING);
		}
		SerializeWriter out = new SerializeWriter();
		try {
			JSONSerializer serializer = null;
			serializer = new JSONSerializer(out, MAPPING);
			if (toJson.prettyFormat) {
				toJson.features.add(SerializerFeature.PrettyFormat);
			}
			for (SerializerFeature feature : toJson.features) {
				serializer.config(feature, true);
			}
			serializer.config(SerializerFeature.WriteDateUseDateFormat, true);
			if (toJson.filter != null) {
				if (toJson.filter instanceof PropertyPreFilter) {
					serializer.getPropertyPreFilters().add((PropertyPreFilter) toJson.filter);
				}
				if (toJson.filter instanceof NameFilter) {
					serializer.getNameFilters().add((NameFilter) toJson.filter);
				}
				if (toJson.filter instanceof ValueFilter) {
					serializer.getValueFilters().add((ValueFilter) toJson.filter);
				}
				if (toJson.filter instanceof PropertyFilter) {
					serializer.getPropertyFilters().add((PropertyFilter) toJson.filter);
				}
			}
			serializer.write(object);
			return out.toString();
		} finally {
			out.close();
		}
	}

	/**
	 * 注冊日期格式化
	 * 
	 * @author 張軍
	 * @date 2015-11-03 21:59:00
	 * @modifiyNote
	 * @version 1.0
	 * @return 批量集合值
	 */
	private static void register() {
		MAPPING.put(Date.class, new DateFormatSerializer());
		MAPPING.put(DateTime.class, new DateFormatSerializer());
		MAPPING.put(Timestamp.class, new DateFormatSerializer());
	}

}


json工具類參數對象

/**
 * @Description  JsonUtil.java
 * @author 張軍
 * @date 2016-7-6 下午1:29:18
 * @version V1.0
 */
package zj.json.bean;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import com.alibaba.fastjson.serializer.SerializeFilter;
import com.alibaba.fastjson.serializer.SerializerFeature;

/**
 * json工具類參數對象
 * 
 * @author 張軍
 * @date 2016-7-6 下午1:29:18
 * @version V1.0
 * @author SHNKCS 張軍 {@link <a target=_blank href="http://www.shanghaijiadun.com">上海加盾信息科技有限公司</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://www.eyofj.com">張軍個人網站</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>}
 */
public class ToJSONString implements Serializable {
	private static final long serialVersionUID = 1L;
	/** 過慮屬性 **/
	public SerializeFilter filter;
	/** 數組 **/
	public Set<SerializerFeature> features = new HashSet<SerializerFeature>();
	/** 是否格式化json串 **/
	public boolean prettyFormat;

	/**
	 * 構造方法默認參數
	 */
	public ToJSONString() {
		// 在springMVC中必須移除pageModel.remove("org.springframework.validation.BindingResult.[user當前類]");
		// FastJson提供了SerializerFeature.DisableCircularReferenceDetect
		// 這個序列化選項,用來關閉引用檢測。關閉引用檢測后,重復引用對象時就不會被$ref代替,但是在循環引用時也會導致StackOverflowError異常。
		this.features.add(SerializerFeature.DisableCircularReferenceDetect);
	}
}

json屬性過慮器

package zj.json.bean;

import java.util.HashSet;
import java.util.Set;

import zj.check.util.CheckUtil;

import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.PropertyPreFilter;

/**
 * json屬性過慮器
 * 
 * @author 張軍
 * @date 2016-7-6 下午1:29:18
 * @version V1.0
 * @author SHNKCS 張軍 {@link  <a target=_blank href="http://www.eyofj.com">張軍個人網站</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>}
 */
public class SimplePropertyPreFilter implements PropertyPreFilter {

	private final Class<?> clazz;
	// 包含的屬性
	private final Set<String> includes = new HashSet<String>();
	// 排除的屬性
	private final Set<String> excludes = new HashSet<String>();

	public SimplePropertyPreFilter(String... properties) {
		this(null, properties);
	}

	public SimplePropertyPreFilter(Class<?> clazz, String... properties) {
		super();
		this.clazz = clazz;
		for (String item : properties) {
			if (CheckUtil.isNotNull(item)) {
				this.includes.add(item);
			}
		}
	}

	public Class<?> getClazz() {
		return clazz;
	}

	public Set<String> getIncludes() {
		return includes;
	}

	public Set<String> getExcludes() {
		return excludes;
	}

	/**
	 * 是否應用json字段
	 * 
	 * @param serializer
	 * @see com.alibaba.fastjson.serializer.JSONSerializer
	 * @param source
	 *            被序列化的對象
	 * @param name
	 *            被序列化的對象中的屬性
	 * @author 張軍
	 * @date 2015-11-03 21:59:00
	 * @modifiyNote
	 * @version 1.0
	 * @return true:包含屬性 false:不包含屬性
	 */
	public boolean apply(JSONSerializer serializer, Object source, String name) {
		if (source == null) {
			return true;
		}

		if (clazz != null && !clazz.isInstance(source)) {
			return true;
		}

		if (this.excludes.contains(name)) {
			return false;
		}

		if (includes.size() == 0 || includes.contains(name)) {
			return true;
		}

		return false;
	}

}

json日期格式化類

/**
 * @Description  DateFormatSerializer.java
 * @author 張軍
 * @date 2016-7-6 下午4:37:19
 * @version V1.0
 */
package zj.json.bean;

import java.io.IOException;
import java.lang.reflect.Type;
import java.sql.Timestamp;

import zj.check.util.CheckUtil;
import zj.date.bean.DateTime;
import zj.date.util.DateUtil;

import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.ObjectSerializer;

/**
 * json日期格式化類
 * 
 * @author 張軍
 * @date 2016-7-6 下午1:29:18
 * @version V1.0
 * @author SHNKCS 張軍 {@link <a target=_blank href="http://www.shanghaijiadun.com">上海加盾信息科技有限公司</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://www.eyofj.com">張軍個人網站</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>}
 */
public class DateFormatSerializer implements ObjectSerializer {

	private String pattern;

	public DateFormatSerializer() {
	}

	public DateFormatSerializer(String pattern) {
		this.pattern = pattern;
	}

	/**
	 * 重寫write方法
	 */
	@Override
	public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
		if (object == null) {
			serializer.getWriter().writeNull();
			return;
		}
		String text = "";
		if (CheckUtil.isNull(pattern)) {
			// 自動判斷
			if (object instanceof DateTime || object instanceof Timestamp) {
				text = DateUtil.dateParse(object, "yyyy-MM-dd HH:mm:ss");
			} else if (object instanceof java.util.Date) {
				//java.sql.Date繼承自java.util.Date
				text = DateUtil.dateParse(object, "yyyy-MM-dd");
			} else {
				// 默認情況下
				text = DateUtil.dateParse(object, "yyyy-MM-dd HH:mm:ss");
			}
		} else {
			text = DateUtil.dateParse(object, pattern);
		}
		serializer.write(text);
	}

}





更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产乱码视频 | 另类色视频 | 99国产精品视频久久久久 | 久久国产美女 | 香蕉视频在线观看网站 | 国产一级一级一级成人毛片 | 国产欧美视频一区二区三区 | 久久―日本道色综合久久 | 网站一级片 | 四虎免费在线播放 | 99久久精品国产高清一区二区 | 日本最猛黑人xxxx猛交 | 兽王高清完整在线观看 | 欧美精品专区第1页 | 深夜福利影院在线观看 | 天海翼一区二区在线观看 | 亚洲国产最新 | 四虎影视1304t | 性大交 | 午夜激情男女 | 国产福利在线视频 | 天天操天天操天天 | 久久久国产免费影院 | 欧美一级欧美三级 | 亚洲精品一区二区久久久久 | 亚洲欧美精品天堂久久综合一区 | 二区三区 | 欧美男女性生活视频 | 亚洲欧美激情精品一区二区 | 色偷偷91久久综合噜噜噜噜 | 免费观看日本特色做爰视频在线 | 国产原创麻豆精品视频 | 综合色中色 | 四虎国产精品成人永久免费影视 | 色久天堂网 | 99热这里只有精品66 | 色综合亚洲天天综合网站 | 亚洲欧美日韩在线 | 成年女人18级毛片毛片免费观看 | 能免费看黄的网站 | 久久这里精品青草免费 |