Jackson 日期对象的处理
来源:互联网 发布:mac远程 qq 编辑:程序博客网 时间:2024/05/29 04:05
近日,使用Jackson转化JSON对象的时候,显示的时候,日期始终显示不正确,输出的日期是一串数字代表的时间戳,不符合要求,所以想到Jackson应当有方法设置输出的日期格式。后来一查果然有两种方式来实现:
1.普通的方式:
默认是转成timestamps形式的,通过下面方式可以取消timestamps。
Java代码
objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false); 这样将使时间生成使用所谓的use a [ISO-8601 ]-compliant notation, 输出类似如下格式的时间: "1970-01-01T00:00:00.000+0000".
当然也可以自定义输出格式:
Java代码
objectMapper.getSerializationConfig().setDateFormat(myDateFormat);
objectMapper.getSerializationConfig().setDateFormat(myDateFormat);
Java代码
myDateFormat对象为java.text.DateFormat,具体使用清查java API
myDateFormat对象为java.text.DateFormat,具体使用清查java API2.annotaion的注释方式:
先定义自己需要的格式,例如:
Java代码
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
/**
* java日期对象经过Jackson库转换成JSON日期格式化自定义类
* @author godfox
* @date 2010-5-3
*/
public class CustomDateSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = formatter.format(value);
jgen.writeString(formattedDate);
}
}
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
/**
* java日期对象经过Jackson库转换成JSON日期格式化自定义类
* @author godfox
* @date 2010-5-3
*/
public class CustomDateSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = formatter.format(value);
jgen.writeString(formattedDate);
}
} 然后在你的POJO上找到日期的get方法
Java代码
@JsonSerialize(using = CustomDateSerializer.class)
public Date getCreateAt() {
return createAt;
}
Java代码
StringWriter sw = new StringWriter();
JsonGenerator gen = new JsonFactory().createJsonGenerator(sw);
JacksonUtil.getInstance().writeValue(gen, jsonlist);
gen.close();
String finalInfo = sw.toString();
System.out.println("finalinfo is:"+finalInfo );
1.普通的方式:
默认是转成timestamps形式的,通过下面方式可以取消timestamps。
Java代码
objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false); 这样将使时间生成使用所谓的use a [ISO-8601 ]-compliant notation, 输出类似如下格式的时间: "1970-01-01T00:00:00.000+0000".
当然也可以自定义输出格式:
Java代码
objectMapper.getSerializationConfig().setDateFormat(myDateFormat);
objectMapper.getSerializationConfig().setDateFormat(myDateFormat);
Java代码
myDateFormat对象为java.text.DateFormat,具体使用清查java API
myDateFormat对象为java.text.DateFormat,具体使用清查java API2.annotaion的注释方式:
先定义自己需要的格式,例如:
Java代码
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
/**
* java日期对象经过Jackson库转换成JSON日期格式化自定义类
* @author godfox
* @date 2010-5-3
*/
public class CustomDateSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = formatter.format(value);
jgen.writeString(formattedDate);
}
}
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
/**
* java日期对象经过Jackson库转换成JSON日期格式化自定义类
* @author godfox
* @date 2010-5-3
*/
public class CustomDateSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = formatter.format(value);
jgen.writeString(formattedDate);
}
} 然后在你的POJO上找到日期的get方法
Java代码
@JsonSerialize(using = CustomDateSerializer.class)
public Date getCreateAt() {
return createAt;
}
Java代码
StringWriter sw = new StringWriter();
JsonGenerator gen = new JsonFactory().createJsonGenerator(sw);
JacksonUtil.getInstance().writeValue(gen, jsonlist);
gen.close();
String finalInfo = sw.toString();
System.out.println("finalinfo is:"+finalInfo );
- Jackson 日期对象的处理
- jackson 处理日期类型
- jackson处理json对象
- 日期对象的简单处理
- jackson处理json对象相关小结
- jackson时间格式的处理
- 关于面向对象的日期处理源代码
- js日期对象兼容性的处理
- FastJson、Jackson、Gson进行Java对象转换Json的细节处理
- Jackson json转为java对象时遇到不规范的命名规则处理
- FastJson、Jackson、Gson进行Java对象转换Json的细节处理
- Jackson 高性能的JSON处理 ObjectMapper
- Jackson 高性能的JSON处理 ObjectMapper
- Jackson 高性能的JSON处理 ObjectMapper
- Jackson 高性能的JSON处理 ObjectMapper
- Jackson 高性能的JSON处理 ObjectMapper
- Jackson 高性能的JSON处理 ObjectMapper
- Jackson应用三 对象属性的控制
- 转:用C#和NAudio解码库播放mp3示例
- 什么是工作流
- Makefile学习2
- Emacs User's Guide
- 使用Jquery EasyUi常见问题解决方案
- Jackson 日期对象的处理
- JOJ1926:Factovisors
- 如何快速清空datagrid中的数据
- linux 系统调用
- 动画(Animation) 之 (闪烁、左右摇摆、上下晃动等效果)
- php 正则表达式小结
- 数字语音--Matlab(转)
- Sql Server存储与性能
- Directx11:基于GPU_GeometryShader的Billboard公告板绘制