springboot处理jackson序列化
2018-11-24 本文已影响216人
三斤牛肉
springmvc的json序列化输出是最基本的技能了。这里讲几个springboot2.X中的通用格式化方式。
bootstrap配置
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
这是最简单的,但是支持的比较少。具体有哪些配置可以找些别的文档。一般用的比较多的就是时间格式了
@JsonComponent
@JsonComponent
public class BigDecimalJsonComponent {
public static class BigDecimalJsonSerializer extends JsonSerializer<BigDecimal> {
@Override
public void serialize(BigDecimal decimal, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
if (decimal!=null) {
jsonGenerator.writeString(decimal.setScale(2,BigDecimal.ROUND_HALF_UP).toString());
}
}
}
public static class BigDecimalJsonDeserializer extends JsonDeserializer<BigDecimal> {
@Override
public BigDecimal deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
return null;
}
}
}
这种方式应该是最全的了,只要注解@JsonComponent,并定义序列化/反序列化的类就可以了(只定义其中一种也行)。具体的可以参见springboot文档
interface Jackson2ObjectMapperBuilderCustomizer
@FunctionalInterface
public interface Jackson2ObjectMapperBuilderCustomizer {
/**
* Customize the JacksonObjectMapperBuilder.
* @param jacksonObjectMapperBuilder the JacksonObjectMapperBuilder to customize
*/
void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder);
}
这个方式应该是直接对objectMapper进行处理了,本人没试过这种方式。