SpringBoot2.x系列教程(十四)SpringBoot Json之@JsonComponent

如果使用Jackson对JSON数据进行序列化和反序列化,则可以编写自己的JsonSerializer和JsonDeserializer。然后通过@JsonSerialize和@JsonDeSerialize来指定具体类是否使用。

同时,SpringBoot提供了一个可选的@JsonComponent注释,可以将对应的JsonSerializer和JsonDeserializer直接注入为Spring Beans,从而实现全局化处理。

下面看具体示例,通过自定义的JsonSerializer和JsonDeserializer和@JsonComponent注解来完成RGB颜色和Web颜色直接的转换。

首先定义Color类,用于存放颜色的属性。

public class ColorDetail {

	private double red;

	private double green;

	private double blue;
    // getter/setter
}

定义解析器并使用注解:

@JsonComponent
public class ColorSerializer extends JsonSerializer<ColorDetail> {

	@Override
	public void serialize(ColorDetail colorDetail, JsonGenerator gen, SerializerProvider serializers) throws IOException {
		gen.writeStartObject();
		gen.writeStringField("webColor", getColorAsWebColor(colorDetail));
		gen.writeEndObject();

	}

	private static String getColorAsWebColor(ColorDetail colorDetail) {
		int r = (int) Math.round(colorDetail.getRed() * 255.0);
		

猜你喜欢

转载自blog.csdn.net/wo541075754/article/details/103814236