jackjson自定义注解

  第一次写样式不会用   害羞公司在做个API的项目 比较多的用到了 图片输出,时间格式化 以及单位等输出对象,之前一直都是写静态方法来处理这种时间转换 今天突然觉得 是不是可以写个注解来实现呢? 追了半天的源码 ,一无所获,果断谷歌了下 真的被我找到了 按照人家提供的方法自己实现了下,

    片段代码(做图片路径补充)

    注解的基本格式  先定义注解的基类

    @Target({ ElementType.FIELD })
    @Retention(RetentionPolicy.RUNTIME)
    @JacksonAnnotationsInside
    @JsonSerialize(using = ImageFieldSerializer.class)
    public @interface ImageField {
  String value();

    }

   注解实现类 集成了 StdSerializer (这个是关键 之前一直用的JsonSerializer,没实现出来)

   public class ImageFieldSerializer extends StdSerializer<Object> implements
ContextualSerializer {
private String classname;
public ImageFieldSerializer() {
super(Object.class);

public ImageFieldSerializer(String classname ) {
super(Object.class);
this.classname = classname ;

@Override
public void serialize(Object value, JsonGenerator jgen,
SerializerProvider provider) throws IOException {
String val = Global.getConfig("res.server") + value + classname;
jgen.writeString(val);

@Override
public JsonSerializer<?> createContextual(SerializerProvider prov,
BeanProperty property) throws JsonMappingException {
String unit = null;
ImageField ann = null;
if (property != null) {
ann = property.getAnnotation(ImageField.class);
}
if (ann != null) {
unit = ann.value();
}
return new ImageFieldSerializer(unit);
}

}

    实体类 注解

     @ImageField("avatar")

private String iamge;// 图片路徑


    测试类不写了 正常的转

   


  个人参考地址::https://stackoverflow.com/questions/43342097/jackson-custom-annotation-for-custom-value-serialization

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值