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

json工具類

張軍 7002 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://m.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://m.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://m.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://m.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條評論
主站蜘蛛池模板: 国产成人香蕉 | 国产精品自在线天天看片 | 欧美日本视频一区 | 国产欧美亚洲另类第一页 | 亚洲成色999久久网站 | 欧美中文字幕在线 | 精品乱码一区二区三区在线 | 免费视频不卡 | 99久久99久久精品免费看子 | 久久香蕉国产线看免费 | 精精国产www视频在线观看免费 | 免费看国产精品久久久久 | 狼人香蕉香蕉在线视频播放 | 中国性xxxxx极品奶水 | 亚洲图片一区二区 | 亚洲精品久久九九精品 | 欧美特级毛片a够爽 | 国产精品露脸张开双腿 | 日本老太做爰xx | 国产大片中文字幕在线观看 | 亚洲永久精品一区二区三区 | 色黄啪啪网18以下免费进 | 亚洲国产第一区二区三区 | 成人黄色小视频 | 国产成人精品日本亚洲直接 | 99欧美精品 | 神马97| 99re这里只有精品99 | 亚洲精品麻豆一区二区 | 欧美成人伊人十综合色 | 国产精品欧美亚洲韩国日本 | 四虎影视1515hh四虎免费 | 久久美剧| 天天做天天爱天天爽 | 一级片免| 国产羞羞羞视频在线观看 | 国产亚洲精品日韩综合网 | 久久久这里只有免费精品2018 | 黄页网址在线免费观看 | 久久性网 | 91福利在线观看 |