为了账号安全,请及时绑定邮箱和手机立即绑定

SpringMVC中使用jackson返回json时如何将枚举转为json

SpringMVC中使用jackson返回json时如何将枚举转为json

犯罪嫌疑人X 2019-03-20 18:14:12
SpringMVC中使用jackson返回json时如何将枚举转为json在网上搜过,给出的方案是在要转换的枚举的get方法上加上@JsonValue注解,我加上后报了错下面是我错误的示例:StatusEnum:IndexController:POM.xml中jackson与Spring的版本号:报的错:
查看完整描述

5 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

我的做法是写个公用的方法转Map

怎么实现方便就怎么去实现,其实我觉得注解应该放在枚举实例的get方法上


public class Result {

    private StatusEnum status;

    ...

    

    @JsonValue

    public StatusEnum getStatus() {

        return status;

    }

    

    public void setStatus(status) {

        this.status = status;

    }

}

我没用过这个所以也不太清楚,不过你可以试试

耐不住好奇心我去试了一下。。。上面那个不可行。。。不过不用@JsonValue


@JsonFormat(shape = JsonFormat.Shape.OBJECT)

public enum StatusEnum {

    STATUS_ERROR("200", "OK"),

    STATUS_SUCCESS(404, "Not Found");

    

    private Stringcode;

    private String msg;

    

    private Status(String code, String msg) {...}


    //getter & setter

    ...

}

亲测 可行


查看完整回答
反对 回复 2019-04-24
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

enum默认jackson只能序列化为索引和枚举名称,如果你需要返回{} json object 需要自已实现Serializer

查看完整回答
反对 回复 2019-04-24
?
万千封印

TA贡献1891条经验 获得超3个赞

@JsonFormat(shape = JsonFormat.Shape.OBJECT)

public enum StatusEnum {

    STATUS_ERROR("200", "OK"),

    STATUS_SUCCESS(404, "Not Found");

    

    private String code;

    private String msg;

    

    private Status(String code, String msg) {...}


    //getter & setter

    @JsonValue

    public String getMsg(){

        return msg;

    }

    ...

}

可以返回成msg的值。


查看完整回答
反对 回复 2019-04-24
?
森栏

TA贡献1810条经验 获得超5个赞

查看官方解释@jsonvalue

'At most one method of a Class can be annotated with this annotation; if more than one is found, an exception may be thrown.'发现多个@jsonvalue会发生异常


查看完整回答
反对 回复 2019-04-24
  • 5 回答
  • 0 关注
  • 2176 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信