Java 如何在Spring引导Rest响应中将布尔值序列化为字符串?
最近,我将项目从泽西岛迁移到了SpringRest。以前,布尔字段被序列化为类似字符串的Java 如何在Spring引导Rest响应中将布尔值序列化为字符串?,java,spring,spring-boot,Java,Spring,Spring Boot,最近,我将项目从泽西岛迁移到了SpringRest。以前,布尔字段被序列化为类似字符串的success:“true”,现在它没有引号success:true。这不会是一个问题,但旧的应用程序依赖它,无法反序列化。如何在Spring Boot中将布尔值作为字符串返回?任何spring.jackson.serialization属性?编写自定义序列化程序和反序列化程序,并在该布尔字段上使用以下注释: @JsonSerialize和@JsonDeserialize。如果您无权访问此字段,请创建一个将对
success:“true”
,现在它没有引号success:true
。这不会是一个问题,但旧的应用程序依赖它,无法反序列化。如何在Spring Boot中将布尔值作为字符串返回?任何spring.jackson.serialization
属性?编写自定义序列化程序和反序列化程序,并在该布尔字段上使用以下注释:
@JsonSerialize和@JsonDeserialize。如果您无权访问此字段,请创建一个将对其执行序列化的类:
public class StringBooleanSerializer extends JsonSerializer<Boolean> {
@Override
public void serialize(Boolean bool, JsonGenerator generator, SerializerProvider provider) throws IOException {
generator.writeString(bool ? "true" : "false");
}
}
就这样。但是,如果您有权访问此字段,则可以执行以下操作:
@JsonSerialize(using=StringBooleanSerializer.class)
private Boolean bool;
如果需要,反序列化也是一样的。为什么不直接使用Boolean.toString?直到我为基本布尔添加了序列化程序,它才起作用。我已经用完整的config.simpleModule.addSerializer(Boolean.class,新的StringBooleanSerializer())编辑了您的答案;simpleModule.addSerializer(boolean.class,新的StringBooleanSerializer());
@JsonSerialize(using=StringBooleanSerializer.class)
private Boolean bool;