Jackson多态反序列化的使用

缘起

最近看Apache Druid的源代码(0.5很老的版本),印象最深的就是对Jackson的多态反序列化和注入的使用了,这里也属于自己的知识盲点,看着复杂的json直接反序列化为可用对象,直呼过瘾。所以一直想找个机会实践一下,这不需求就来了。

需求

我们的实时指标统计是通过Flink Steam SQL计算为维度、指标后后入Hbase,然后通过Phoenix SQL给前台展示。现在新接入Kylin数据源,需要兼容查询Kylin数据源。

看到这个需求,变化点在查询方式上,抽象出查询服务,提供多态支持,但各个指标查询需要的信息是不同的。如Kylin数据源需要查询的表名,聚合函数等,但Hbase数据源压根不需要这些信息,这时候就该Jackson多态反序列化出厂了。

实践

数据库新增querySpec字段,描述指标的个性化需求,如{“type”:“rc”,“tableName”:“TASK_SNAPSHOT”,“fieldName”:“EVENTCODE”}
{“type”:“hbase”}

看如下代码:

import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;

/**
 * Created by yihaibo on 2019-09-11.
 */
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, property = "type", defaultImpl = HbaseQuerySpec.class )
@JsonSubTypes(value = {
   
        @JsonSubTypes.Type(value = HbaseQuerySpec.class, name = "hbase"),
        @JsonSubTypes.Type(value = RcHttpQuerySpec.class, name = 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值