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

如何通过JSON注解实现POJO中String字段按需序列化为int类型?

实现String字段的动态JSON序列化

没有现成的JSON注解能直接实现这个需求,但可以通过自定义序列化器来搞定,以常用的Jackson库为例:

步骤1:自定义序列化器

写一个继承自JsonSerializer<String>的类,在序列化时判断字符串是否能转成int,能就输出数字,否则输出字符串:

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;

public class DynamicCodeSerializer extends JsonSerializer<String> {
    @Override
    public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        if (value == null) {
            gen.writeNull();
            return;
        }
        try {
            int intValue = Integer.parseInt(value);
            gen.writeNumber(intValue);
        } catch (NumberFormatException e) {
            gen.writeString(value);
        }
    }
}

步骤2:给POJO字段加注解

在你的code字段上加上@JsonSerialize注解,指定用上面写的序列化器:

import com.fasterxml.jackson.databind.annotation.JsonSerialize;

public class YourPOJO {
    @JsonSerialize(using = DynamicCodeSerializer.class)
    private String code;

    // 别忘了补充getter和setter方法
}

这样就能实现你要的效果:当code是纯数字字符串(比如"111")时,序列化后是数字类型;如果是字母或其他非纯数字字符串(比如"CD"),就保持字符串类型输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:30:52