gpt4 book ai didi

java - 如何在没有源的对象上重写 @JsonSerialize() ?

转载 作者:行者123 更新时间:2023-12-01 07:05:44 26 4
gpt4 key购买 nike

我有一个位于 .jar 中的类,但无法修改。

它在类上有一个 @JsonSerialize() 注释。

@JsonSerialize(using = SomeClassSerializer.class)
@JsonDeserialize(using = SomceClassDeserializer.class)
public class SomeClass { /* ommitted */ }

现在我需要在此类上运行自定义序列化程序以输出完全不同的 JSON。

这是我尝试过的:

final SomeClass sc = new SomeClass();
// setup ommitted
final ObjectMapper m = new ObjectMapper();
final SimpleModule module = new SimpleModule();
module.addSerializer(SomeClass.class, new CustomClassSerializer());
m.registerModule(module);
m.enable(SerializationFeature.INDENT_OUTPUT);
m.writer().writeValue(System.out, sc);

问题是我得到默认的带注释的 SomeClassSerializer 输出,而不是 CustomClassSerializer 输出。

如何告诉ObjectMapper忽略注释?

最佳答案

解决方案

final ObjectMapper m = new ObjectMapper();
m.disable(MapperFeature.USE_ANNOTATIONS);

经过深入研究 JavaDocs,我找到了这个解决方案,这似乎是最惯用的方法。

关于java - 如何在没有源的对象上重写 @JsonSerialize() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25316641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com