package message.mvc.convert;
import com.fasterxml.jackson.core.Base64Variants;
import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationConfig;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.cfg.BaseSettings;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.type.TypeFactory;
import message.base.convert.ConvertGetter;
import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.TimeZone;
/**
* 使用默认时区.
*
* @author sunhao(sunhao.java@gmail.com)
* @version V1.0, 15/6/20 上午5:35
*/
public class CustomObjectMapper extends ObjectMapper {
private static final long serialVersionUID = 1L;
public CustomObjectMapper() {
//使用默认时区
BaseSettings baseSettings = new BaseSettings(DEFAULT_INTROSPECTOR,
DEFAULT_ANNOTATION_INTROSPECTOR, STD_VISIBILITY_CHECKER, null, TypeFactory.defaultInstance(),
null, null, null,
Locale.getDefault(),
TimeZone.getDefault(),
Base64Variants.getDefaultVariant() // 2.1
);
_serializationConfig = new SerializationConfig(baseSettings, _subtypeResolver, _mixInAnnotations);
_deserializationConfig = new DeserializationConfig(baseSettings, _subtypeResolver, _mixInAnnotations);
configure(SerializationFeature.WRITE_ENUMS_USING_INDEX, true);
// 序列化枚举时的处理
SimpleModule module = new SimpleModule();
module.addSerializer(ConvertGetter.class, new EnumSerializer());
registerModule(module);
//日期的处理
//默认是将日期类型转换为yyyy-MM-dd HH:mm
//如果需要自定义的,则在pojo对象的Date类型上加上注解
//@com.fasterxml.jackson.annotation.JsonFormat(pattern = "时间格式化")
setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm"));
}
}