MappingJackson2对日期格式转化
在 Spring3.0 以前大部分会用 MappingJackson 对 Json 格式数据做转化,Spring3.0 以后很多在使用 MappingJackson2 对 Json 格式数据做转化,但MappingJackson2 如果不对日期格式的数据做处理,传到前台的数据是 Long 类型的数据。
网上对 MappingJackson2 的日期格式转化有很多办法,Jackson2自带的就有注解方式,还有通过配置 XML 进行转换的,我都一一进行了测试,通过配置 XML 是通过对 ObjectMapper 更改达成目的,但会有一个问题,就是向前台传送字符串会自动给数据加上斜杠,当然如果全部传对象的话,是不存在这个问题。但有时向前台传字符串是不可避免的。有斜杠看着很不舒服。
我现在是通过使用 ObjectMapper 对象,做了一个工具类,向前台返回时,把所有的对象转换成字符串或 Map / List 类型数据。代码如下:
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class JsonConvertUtils {
private static final Long serialVersionUID = 1L;
private static final ObjectMapper jsonMap = new ObjectMapper();
/**
* @description 对象转成字符串
* @param object
* @return
*/
public static String objectConvertStringForDate(Object object) {
try {
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
jsonMap.setDateFormat(sdf);
return jsonMap.writeValueAsString(object);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
/**
* 转List/Map类型的数据,单个实体类不要用此方法,转回去之后还是会显示Long类型日期
* @param cal
* @return 对象
*/
public static Object objectConvertDate(Object cal) {
try {
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
jsonMap.setDateFormat(sdf);
String returnValue = jsonMap.writeValueAsString(cal);
return jsonMap.readValue(returnValue,cal.getClass());
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
有不对的地方望大家指正