You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JSON字符串转换为CqlDuration?Jackson反序列化报错解决

解决Jackson反序列化字符串到CqlDuration的问题

可以通过添加Jackson注解结合自定义逻辑解决这个问题,核心是告诉Jackson如何将字符串格式的时长转换为CqlDuration实例,以下是两种可行方案:

方案一:自定义反序列化器 + @JsonDeserialize注解

这种方式灵活性高,适合多个实体类复用同一转换逻辑:

  1. 编写自定义反序列化器,借助CqlDuration.fromString()方法完成字符串到对象的转换:
import com.datastax.oss.driver.api.core.data.CqlDuration;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import java.io.IOException;

public class CqlDurationDeserializer extends StdDeserializer<CqlDuration> {

    public CqlDurationDeserializer() {
        this(null);
    }

    public CqlDurationDeserializer(Class<?> vc) {
        super(vc);
    }

    @Override
    public CqlDuration deserialize(JsonParser parser, DeserializationContext ctx) throws IOException {
        return CqlDuration.fromString(parser.getText());
    }
}
  1. 在实体类的对应字段上添加@JsonDeserialize注解,指定使用自定义反序列化器:
public class YourDataEntity {
    // 其他字段...

    @JsonDeserialize(using = CqlDurationDeserializer.class)
    private CqlDuration down_duration;

    // getter、setter方法...
}

方案二:使用@JsonCreator注解标记工厂方法

如果不想编写单独的反序列化器,可以在实体类中添加带@JsonCreator注解的静态工厂方法,直接处理JSON字段的转换:

import com.datastax.oss.driver.api.core.data.CqlDuration;
import com.fasterxml.jackson.annotation.JsonCreator;
import java.util.Map;

public class YourDataEntity {
    private CqlDuration down_duration;
    // 其他字段...

    @JsonCreator
    public static YourDataEntity createFromJson(Map<String, Object> jsonMap) {
        YourDataEntity entity = new YourDataEntity();
        String durationStr = (String) jsonMap.get("down_duration");
        entity.setDown_duration(CqlDuration.fromString(durationStr));
        // 初始化其他字段...
        return entity;
    }

    // getter、setter方法...
}

注意事项

  • 确保项目已正确引入Cassandra Java Driver依赖,CqlDuration.fromString()支持解析"1h"、"30m"、"2d"这类符合ISO 8601标准的时长字符串。
  • 如果需要将CqlDuration序列化为字符串返回,可参照上述逻辑编写自定义序列化器,配合@JsonSerialize注解使用。

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:41:42