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

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://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热视热频这里只有精品 | 色老成人精品视频在线观看 | 亚洲性另类 | 四虎最新永久免费视频 | 五月婷婷社区 | 亚洲se网| 国产成人国产在线观看入口 | 女bbbbxxx| 亚洲精品久久久久影院 | 91亚洲国产系列精品第56页 | 2345成人高清毛片 | 亚洲欧美日韩精品久久 | 国产一级黄色毛片 | 日日摸夜夜欧美一区二区 | 国产香蕉国产精品偷在线观看 | 久久精品视频大全 | 欧美日韩免费在线 | 老司机久久影院 | 亚洲精品欧洲久久婷婷99 | 四虎网址在线 | 五月婷婷色网 | 国产日韩欧美精品在线 | 欧美成人香蕉网在线观看 | 日本亚州在线播放精品 | 97夜色| 久久97久久 | 久久精品免费大片国产大片 | 一级欧美一级日韩毛片99 | 日韩 欧美 中文 | 看特级大黄一片 | 日本福利片国产午夜久久 | 天天操妹子 | 久久久久久久久毛片精品 | 99热免费在线 | 黄色网址在线免费 | 亚洲热在线观看 | 久久亚洲国产成人精品性色 | 亚洲综合无码一区二区 | 天天干天天射天天爽 | 老司机午夜免费福利 | 天天摸日日舔 |