引言: 在Web应用开发中,经常需要将对象转化为JSON字符串的过程中,会有默认的输出内容不符合要求的情况,比如DateTime。一般可以通过定制Serializer来实现定制化的JSON字符输出。
1. 在对象中的getXXX方法中设置自定义的Serializer
public class MyObject { private DateTime startDate; @JsonSerialize(using = DateTimeJsonSerializer.class) public DateTime getStartDate(){ return this.startDate; } }说明:
1. @JsonSerializer定义了自定义的序列号类,
2. using中指定自定义的java转化类
2. 实现自定义的Serializer
public class DateTimeJsonSerializer extends JsonSerializer<DateTime> { private static DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH-mm-ss"); @Override public void serialize(DateTime value, JsonGenerator generator, SerializerProvider arg2) throws IOException, JsonProcessingException { generator.writeString(formatter.print(value)); } }在这个例子中,主要是针对DateTime进行JSON输出类型信息的转换。
DateTime在声明类型的时候,做通用类T来输入;在具体的方法中,做为value来传入。 generator.writeString()来输出JSON String信息。
3. 进行测试
在未进行自定义格式化输出之前
在进行格式化输出之后:
4. 总结
有了@JsonSerialize这个神器之后,就可以随心所欲的输出Json结果信息了。
参考文档
1. http://stackoverflow.com/questions/3269459/how-to-serialize-joda-datetime-with-jackson-json-processer
2. http://stackoverflow.com/questions/14026081/jackson-automatic-formatting-of-joda-datetime-to-iso-8601-format