gpt4 book ai didi

json - Jackson:是否可以用 @JsonSerialize 注释(例如,用 ObjectMapper)替换序列化器集?

转载 作者:行者123 更新时间:2023-12-04 20:00:17 28 4
gpt4 key购买 nike

快速提问:是否可以覆盖 @JsonSerialize使用 ObjectMapper 注释(using 属性)?

我有 spring-security-oauth2集成和我想定制的方式OAuth2Exception序列化为 JSON 格式。问题是这个类使用

@JsonSerialize(using = OAuth2ExceptionJackson2Serializer.class)

我尝试使用以下方法注册自定义序列化程序:
SimpleModule module = new SimpleModule()
module.addSerializer(OAuth2Exception, new JsonSerializer<OAuth2Exception>() {
@Override
void serialize(OAuth2Exception value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
jgen.writeString('{"test":"test"}')
}
})

ObjectMapper objectMapper = new ObjectMapper()
objectMapper.registerModule(module)

但它不起作用 - 序列化程序设置为 @JsonSerialize使用而不是自定义的。

有没有其他方法可以用 @JsonSerialize 替换序列化程序集?

PS:示例代码写在 groovy

最佳答案

对于这种情况,Jackson 有一个机制叫做 mix-in annotations .

您可以创建一个覆盖初始注释的类。

@JsonSerialize(using=MySerializer.class)
public static abstract class OAuth2ExceptionMixIn {

}

然后在对象映射器中注册它:
objectMapper.addMixIn(OAuth2Exception.class, OAuth2ExceptionMixIn.class);

就是这样。现在 jackson 应该使用你的 MySerializer而不是最初的 OAuth2ExceptionJackson2Serializer.

关于json - Jackson:是否可以用 @JsonSerialize 注释(例如,用 ObjectMapper)替换序列化器集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30123423/

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