自定义Jackson序列化 @JsonSerialize

秒速五厘米 2022-05-08 12:52 604阅读 0赞

自定义json序列化需要实现StdSerializer或者JsonSerializer

我要序列化House这个类,加上注解,指定用于序列化的类

  1. package com.xhx.json.entity;
  2. import com.fasterxml.jackson.annotation.JsonFormat;
  3. import com.fasterxml.jackson.databind.annotation.JsonSerialize;
  4. import com.xhx.json.serializers.HourseSerializer;
  5. import java.util.Date;
  6. @JsonSerialize(using = HourseSerializer.class)
  7. public class Hourse {
  8. private String location;
  9. private Date buildDate;
  10. public String getLocation() {
  11. return location;
  12. }
  13. public void setLocation(String location) {
  14. this.location = location;
  15. }
  16. public Date getBuildDate() {
  17. return buildDate;
  18. }
  19. public void setBuildDate(Date buildDate) {
  20. this.buildDate = buildDate;
  21. }
  22. }
  23. package com.xhx.json.serializers;
  24. import com.fasterxml.jackson.core.JsonGenerator;
  25. import com.fasterxml.jackson.databind.SerializerProvider;
  26. import com.fasterxml.jackson.databind.ser.std.StdSerializer;
  27. import com.xhx.json.entity.Hourse;
  28. import java.io.IOException;
  29. public class HourseSerializer extends StdSerializer<Hourse> {
  30. public HourseSerializer(){
  31. super(Hourse.class);
  32. }
  33. protected HourseSerializer(Class<Hourse> t) {
  34. super(t);
  35. }
  36. @Override
  37. public void serialize(Hourse hourse, JsonGenerator generator, SerializerProvider provider) throws IOException {
  38. generator.writeStartObject();
  39. generator.writeFieldName("id");
  40. generator.writeString("自定义");
  41. generator.writeFieldName("location");
  42. generator.writeString(hourse.getLocation());
  43. generator.writeObjectField("buildDate",hourse.getBuildDate());
  44. generator.writeEndObject();
  45. }
  46. }

测试:

70

**实时内容请关注微信公众号,公众号与博客同时更新:程序员星星**

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTIzMjY0NjI_size_16_color_FFFFFF_t_70

发表评论

表情:
评论列表 (有 0 条评论,604人围观)

还没有评论,来说两句吧...

相关阅读