一种将枚举Enum转换为JSON对象的方法

本文介绍了如何使用Jackson库将枚举类型转换为包含更多信息的JSON对象,以避免默认转换只输出枚举名称的问题。通过在枚举中添加`toMap`方法和自定义`JsonSerializer`,可以将枚举实例转换为包含状态和代码的JSON对象。
摘要由CSDN通过智能技术生成

Jackson ObjectMapper默认将枚举类型Enum转换为它的名称,亦即为字符串,比如将枚举SUCCESS(“SUCCESS”, 200)输出为“SUCCESS”,这丢失了很多额外的信息,并且前端也不易处理,如将服务器返回状态定义为枚举:

 

public enum ActionStatus {

    SUCCESS("SUCCESS", 200), FAIL_500("FAIL", 500);

    private final String status;

    private final int code;

    private ActionStatus(String status, int code) {
        this.status = status;
        this.code = code;
    }

    public String getStatus() {
        return status;
    }

    public int getCode() {
        return code;
    }

}

经测试,无论是JsonProperty还是JsonGetter都不能解决此问题,输出依旧为枚举的名称,而在枚举中,默认的toString方法是不能覆盖的,想来想去,只好手动进行处理: 
1. 在ActionStatus添加转换为Map的方法; 
2. 实现JsonSerializer接口,注册

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值