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> <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> <a target=_blank href="http://m.eyofj.com">張軍個人網站</a> <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> <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> <a target=_blank href="http://m.eyofj.com">張軍個人網站</a> <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); } }
本文為張軍原創文章,轉載無需和我聯系,但請注明來自張軍的軍軍小站,個人博客http://m.eyofj.com
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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