如何在 Spring Boot Rest 响应中将布尔值序列化为字符串?

Jus*_*tas 4 java spring spring-boot

最近我已将项目从 Jersey 迁移到 Spring Rest。以前布尔字段被序列化为字符串success: "true",现在它变得不带引号success: true。这不会是一个问题,但旧的应用程序依赖它并且无法反序列化。如何在 Spring Boot 中以字符串形式返回布尔值?有财产spring.jackson.serialization吗?

Pau*_*nis 7

如果您无权访问此字段,请创建一个为其执行序列化的类:

public class StringBooleanSerializer extends JsonSerializer<Boolean> {

    @Override
    public void serialize(Boolean bool, JsonGenerator generator, SerializerProvider provider) throws IOException {
        generator.writeString(bool ? "true" : "false");
    }
}
Run Code Online (Sandbox Code Playgroud)

使用您的对象映射器注册它:

    SimpleModule simpleModule = new SimpleModule();
    simpleModule.addSerializer(new StringBooleanSerializer());

    objectMapper.registerModule(simpleModule);
Run Code Online (Sandbox Code Playgroud)

就是这样。但是,如果您有权访问该字段,则可以执行以下操作:

@JsonSerialize(using=StringBooleanSerializer.class)
private Boolean bool;
Run Code Online (Sandbox Code Playgroud)

如果需要的话,反序列化也是如此。