Jackson 序列化问题总结

1 篇文章 0 订阅

枚举类enum在json序列化时返回枚举值

方法一:只需在get方法上加上@JsonValue注解即可

public enum PropertyOperation {
    EQ("="),
    GT(">"),
    GTE(">="),
    LT("<"),
    LTE("<=");

    private String opStr;

    PropertyOperation(String opStr) {
        this.opStr = opStr;
    }

    @JsonValue
    public String getOpStr() {
        return opStr;
    }
}

方法二:重写serialize方法,针对PropertyOperation枚举类单独处理

public static String transformDslJsonProcess(DSL dsl){
    String result = "";
    try {
        ObjectMapper objectMapper = new ObjectMapper();
        SimpleModule simpleModule = new SimpleModule();
        simpleModule.addSerializer(Enum.class, new StdSerializer<Enum>(Enum.class) {
            @Override
            public void serialize(Enum anEnum, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
                if(anEnum instanceof PropertyOperation){
                    PropertyOperation propertyOperation = (PropertyOperation) anEnum;
                    jsonGenerator.writeString(propertyOperation.getOpStr());
                }
            }
        });
        objectMapper.registerModule(simpleModule);
        result = objectMapper.writeValueAsString(dsl);
    } catch (IOException e) {
        log.error("json process error", e);
    }
    return result;
}

json序列化时忽略值为空的属性

方法一:增加spring配置文件,全局null为空不序列化

spring.jackson.default-property-inclusion=non_empty

方法二:针对某个属性,增加注解,这个属性为空序列化就不会输出这个属性

@JsonInclude(JsonInclude.Include.NON_EMPTY) 
private CombinationFormatType combinationFormatType;

json序列化时修改属性名字即Key的名称

加上@JsonProperty注解,那么在序列化时key的值就是注解括号中的值

@JsonProperty("combination_format") 
private CombinationFormatType combinationFormatType;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值