Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jackson:是否可以用@JsonSerialize注释替换序列化程序集(例如,使用ObjectMapper)?_Json_Jackson_Spring Security Oauth2 - Fatal编程技术网

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

Jackson:是否可以用@JsonSerialize注释替换序列化程序集(例如,使用ObjectMapper)?,json,jackson,spring-security-oauth2,Json,Jackson,Spring Security Oauth2,快速问题:是否可以使用ObjectMapper覆盖@JsonSerialize注释(使用属性) 我集成了spring-security-oauth2,我想定制OAuth2Exception序列化为JSON格式的方式。问题是这个类使用 @JsonSerialize(using = OAuth2ExceptionJackson2Serializer.class) 我尝试将自定义序列化程序注册到: SimpleModule module = new SimpleModule() module.add

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

我集成了
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)
SimpleModule=newsimpleModule()
addSerializer(OAuth2Exception,新的JsonSerializer(){
@凌驾
void serialize(OAuth2Exception值、JsonGenerator jgen、SerializerProvider提供程序)引发IOException、JsonProcessingException{
jgen.writeString(“{”test:“test”}”)
}
})
ObjectMapper ObjectMapper=新的ObjectMapper()
objectMapper.registerModule(模块)
但它不起作用-使用了带有
@JsonSerialize
的序列化程序集,而不是自定义的序列化程序集

是否有其他方法将序列化程序集替换为
@JsonSerialize


PS:示例代码是用
groovy

编写的,因为在这种情况下,Jackson有一种称为的机制

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

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

}
然后在对象映射器中注册它:

objectMapper.addMixIn(OAuth2Exception.class, OAuth2ExceptionMixIn.class);
就这样。现在Jackson应该使用您的
MySerializer
而不是初始的
OAuth2ExceptionJackson2Serializer

.

也许混合注释可以帮助。。。检查一下:还有一个提示:您甚至可以删除自定义序列化程序,并完全通过mixin控制序列化。无论您喜欢什么。@LukaszWiktor是否可以在不使用customserializer的情况下,仅使用mixin对响应进行完整的编程控制?@Kalinga这取决于所需的输出格式。Jackoson提供了许多选项来塑造输出JSON结构-您可以使用
@JsonProperty
重命名字段,使用
@JsonIgnore
忽略其中一些字段,并进行更多微调
@JsonSerializer
转换器
。我很少需要编写自定义序列化程序。如果您有一个特定的用例,只需发布一个问题并让我知道。根据您的回答,我使用了自定义序列化程序。它起作用了。只是想检查是否有更多的选项,而不是忽略和属性。谢谢你