jackson序列化、反序列化

请求要分两种情况,一种是get请求,直接传参数,一种是post传json字符串的,前一种要用springboot的转换器,后一种自定义反序列化方法

需求1:旧代码不规范,重构规范

前端有如下要求

  1. 将响应-1改成0
  2. 将请求0改为-1

响应(序列化)

  • 创建Json 序列化器
import java.io.IOException;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;


/**
 * 响应到前端时-1要转换为0
 */
public class Negative1To0Serializer extends JsonSerializer<Integer> {

    @Override
    public void serialize(Integer value, JsonGenerator gen, SerializerProvider serializers)
            throws IOException {
        gen.writeNumber(format(value));
    }

    /**
     * -1要转换为0
     *
     * @param value
     * @return
     */
    private Integer format(Integer value) {
        return value == -1 ? 0 : value;
    }
}
  • 在vo上使用
@JsonSerialize(using = Negative1To0Serializer.class)
    @ApiModelProperty(value = "状态(1:正常  -1:关闭)", notes = "int(2)")
    private Integer state;

请求(反序列化)

import java.io.IOException;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;


/**
 * 前端提交的0转-1
 */
public class ZeroToNegative1ToSerializer extends JsonDeserializer<Integer> {

    @Override
    public Integer deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
            throws IOException, JsonProcessingException {
        Integer value = Integer.valueOf(jsonParser.getText());
        return value == 0 ? -1 : value;
    }
}
   @JsonDeserialize(using = ZeroToNegative1ToSerializer.class)
    @ApiModelProperty(value = "状态(1:正常  -1:关闭)", notes = "int(2)")
    private Integer state;

需求2:要求驼峰命名

响应VO

    @JsonProperty("disabledDate")
    @ApiModelProperty(value = "失效时间", notes = "")
    private Long disableddate;

请求Query

 	@JsonAlias("disabledDate")
    @ApiModelProperty(value = "失效时间", notes = "bigint(13)")
    private Long disableddate;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值