27.1.3 Custom JSON Serializers and Deserializers

如果使用Jackson序列化,反序列化JSON数据,你可能想编写自己的JsonSerializerJsonDeserializer类。自定义序列化器(serializers)通常通过Module注册到Jackson,但Spring Boot提供了@JsonComponent注解这一替代方式,它能轻松的将序列化器注册为Spring Beans。

你可以使用@JsonComponent直接注释在 JsonSerializer 或 JsonDeserializer实现上,这样就算注册了,也可以在包含serializers/deserializers作为其内部类的类上使用该注解,如:

import java.io.*;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
import org.springframework.boot.jackson.*;

@JsonComponent
public class Example {

    public static class Serializer extends JsonSerializer<SomeObject> {
        // ...
    }

    public static class Deserializer extends JsonDeserializer<SomeObject> {
        // ...
    }

}

所有在上下文(ApplicationContext)中被@JsonComponent注释的bean,都会被自动注册到Jackson中。由于@JsonComponent本身被@Component注解了(meta-annotated),因此也应用于组件扫描(component-scanning)规则

Spring Boot自身还提供了 JsonObjectSerializerJsonObjectDeserializer这两个base classes,这两个基类在处理序列化时为Jackson标准版提供有用的替代方案,具体参见javadoc。

results matching ""

    No results matching ""