前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot2.x系列教程(十四)SpringBoot Json之@JsonComponent

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

作者头像
程序新视界
发布2020-02-11 15:16:23
1K0
发布2020-02-11 15:16:23
举报
文章被收录于专栏:丑胖侠丑胖侠

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

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

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

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

代码语言:javascript
复制
public class ColorDetail {

	private double red;

	private double green;

	private double blue;
    // getter/setter
}

定义解析器并使用注解:

代码语言:javascript
复制
@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);
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档