码迷,mamicode.com
首页 > Web开发 > 详细

如何定制对象中特定字段的JSON输出内容

时间:2015-02-11 16:36:46      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:json   java   定制化   serialize   

引言: 在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

如何定制对象中特定字段的JSON输出内容

标签:json   java   定制化   serialize   

原文地址:http://blog.csdn.net/blueheart20/article/details/43735087

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!