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进行处理了,本人没试过这种方式。

上一篇 下一篇

猜你喜欢

热点阅读