Jackson-对象内部属性的自定义序列化器

lhcgjxsq  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(66)

我正在寻找一种方法来输出所有BigIntegers作为字符串使用Jackson。这些BigIntegers在我的应用程序中的许多类中都有使用,因此将@JsonSerialize添加到所有字段不是一个选项。
我已经创建了一个自定义的Jackson序列化器,但这只对被序列化的基类有效,而对类内部的属性无效。所以,这不起作用:

public class BigIntegerSerializer extends JsonSerializer<BigInteger> {

    @Override
    public void serialize(BigInteger value, JsonGenerator jgen,
                      SerializerProvider provider) throws IOException {
        jgen.writeString(value + "");
    }
}

有没有一种方法可以在某个类型的所有属性上序列化一个Jackson,而不需要向所有属性添加@JsonSerialize?
要序列化的对象可以是任何包含BigIntegers的POJO。
PS:将BigIntegers转换为String的想法是为了使JavaScript不会将这些数字转换为科学记数法。我的所有主键都使用BigInteger,所以当JavaScript将它们转换为科学记数法时,我不能再使用它们。

sirbozc5

sirbozc51#

看看Jackson How-To: Custom Serializers。举个例子

ObjectMapper mapper = new ObjectMapper();
SimpleModule testModule = new SimpleModule("MyModule", new Version(1, 0, 0, null));
testModule.addSerializer(new BigIntegerSerializer());
mapper.registerModule(testModule);

相关问题