继承JsonSerialize抽象类实现自定义序列化器

  1. 自定义序列化器需要继承 JsonSerializer 接口,泛型为需要被序列化的对象
  2. 重写 serialize() 方法
  3. 在需要序列化的实体类上加上注解 @JsonSerialize(using = TemplateSerialize.class) 指定序列化器
public class TemplateSerialize extends JsonSerializer<Template> {
    /**
     *
     * @param template 需要被序列化的对象
     * @param jsonGenerator Json生成器
     * @param serializerProvider 序列化提供工具
     * @throws IOException
     */
    @Override
    public void serialize(Template template, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        // start
        jsonGenerator.writeStartObject();
        // 设置序列化字段及其对应的值
        jsonGenerator.writeStringField("id", template.getId().toString());
        jsonGenerator.writeStringField("name", template.getName());
        jsonGenerator.writeStringField("logo", template.getLogo());
        jsonGenerator.writeStringField("desc", template.getDesc());
        jsonGenerator.writeStringField("category", template.getCategory().getDescription());
        jsonGenerator.writeStringField("count", template.getCount().toString());
        jsonGenerator.writeStringField("createTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
                .format(template.getCreateTime()));
        jsonGenerator.writeStringField("userId", template.getUserId().toString());
        // end
        jsonGenerator.writeEndObject();
    }
}

你可能感兴趣的:(工具类)