jack序列化问题

jackson序列化问题

1:序列化的时候根据某个类进行特定的序列化

代码示例:

@RefreshScope
public class JsonCustomizerConfiguration {
    @Value("${client.commons.response.convert.convertBooleanToNumber:true}")
    private boolean convertBooleanToNumber;
    private static final String format = "yyyy-MM-dd HH:mm:ss";
    private final JsonSerializer<Boolean> booleanJsonSerializer = new JsonSerializer<Boolean>() {
        @Override
        public void serialize(Boolean aBoolean, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
            if (convertBooleanToNumber) {
                jsonGenerator.writeNumber(aBoolean ? 1 : 0);
            } else {
                jsonGenerator.writeBoolean(aBoolean);
            }
        }
    };

    private final JsonSerializer<LocalDateTime> localDateTimeJsonSerializer = new JsonSerializer<LocalDateTime>() {
        @Override
        public void serialize(LocalDateTime localDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
            jsonGenerator.writeString(LocalDateTime.now().format(DateTimeFormatter.ofPattern(format)));
        }
    };

    @Bean("jackson2ObjectMapperBuilderCustomizer")
    @ConditionalOnMissingBean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
        return builder -> builder
                .serializerByType(Boolean.class, booleanJsonSerializer)
                .serializerByType(Boolean.TYPE, booleanJsonSerializer)
                .serializerByType(Long.class, ToStringSerializer.instance)
                .serializerByType(Long.TYPE, ToStringSerializer.instance)
                .serializerByType(LocalDateTime.class, localDateTimeJsonSerializer)
                .build();
    }
}

2:序列化对象的时候不序列化空值

使用 @JsonInclude(value= JsonInclude.Include.NON_NULL)

@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonInclude(value= JsonInclude.Include.NON_NULL)
public class BaseResponse {
    private Integer code;
    private String message;
    private LocalDateTime timestamp;
    private Long total;
    private Object data;
}

3:springmvc 接收参数规定属性名大写

@JsonProperty(value = "Body")
    private BodyParam Body;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值