JsonSerialize(返回数据时可在对象get方法上对字符串进行拼接、日期转换等)

1、数据库存储的是图片名称,获取图片时路径需要自己拼接,因为自己代码的原因直接在实体类get方法上拼接会有问题,for循环和sql里拼接(忽略),发现用JsonSerialize进行返回值字符串拼接的方法,觉得挺不错的,就分享给大家,也给大家做个参考

2、示例:

我们可以自定义拼接的代码,返回数据到前台的时候就可以按照我们的需要返回拼接后的字符串数据。

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.iflyrec.jk.sdk.hdfs.HdfsClient;
import org.apache.commons.lang3.StringUtils;

import java.io.IOException;

/**
 * @author xqli7
 * @create 2018/8/3
 */
public class LibraryFileSerialize extends JsonSerializer {


    private static final HdfsClient hdfsClient = SpringBootBeanUtils.getBean(HdfsClient.class);

    @Override
    public void serialize(String filePath, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        if (StringUtils.isNotEmpty(filePath)) {
           filePath = hdfsClient.getFullUrl() + filePath;
        }
        jsonGenerator.writeString(filePath);
    }


}

 注意,有了自定义拼接的代码,千万别忘了在实体类的get方法上加上注解,将jackson在转换json的时候调用我们定义的转换器,返回前端的时候就是我们拼接后的数据了

/***
 *
 * @author xqli7
 *  @date 2018/8/3 14:08
 * @description:
 */
public class LibraryFile {

    private String id;

    private String fileName;

    @JsonSerialize(using = LibraryFileSerialize.class)
    private String filePath;


    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public String getFilePath() {
        return filePath;
    }
    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }


}

这里也可以进行数据转换,如转换成字符串日期格式,咱们只需要在定义的代码中进行SimpleDateFormat就可以(别忘了加上注解),如下:

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.iflyrec.jk.sdk.hdfs.HdfsClient;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author xqli7
 * @create 2018/8/3
 */
public class LibraryFileSerialize extends JsonSerializer {

    @Override
    public void serialize(Date createDate, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        jsonGenerator.writeString(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createDate));
    }

}

 

你可能感兴趣的:(java-开发学习)