首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Jackson2中使用多参数构造函数反序列化枚举?

如何在Jackson2中使用多参数构造函数反序列化枚举?
EN

Stack Overflow用户
提问于 2012-09-21 01:06:27
回答 1查看 991关注 0票数 4

给定一个看起来像{statusCode:401}的JSON,我如何使用Jackson 2将其反序列化为下面的枚举。主要问题是在反序列化时,我只有状态码而没有描述。

代码语言:javascript
复制
public enum RestApiHttpStatus
{
    OK(200, "Ok"),
    INTERNAL_SERVER_ERROR(500, "Internal Server Error"),
    BAD_REQUEST(400, "Bad Request"),
    UNAUTHORIZED(401, "Unauthorized"),
    FORBIDDEN(403, "Forbidden"),
    NOT_FOUND(404, "Not Found");

    private final int statusCode;
    private final String description;

    private RestApiHttpStatus(int statusCode, String description)
    {
        this.statusCode = statusCode;
        this.description = description;
    }

    public int getStatusCode()
    {
        return statusCode;
    }

    public String getDescription()
    {
        return description;
    }
}

如何配置Jackson2来处理这种情况?

EN

回答 1

Stack Overflow用户

发布于 2012-09-21 05:40:18

添加以下带有适当Jackson注释的静态工厂方法可以达到这个目的。

代码语言:javascript
复制
@JsonCreator
public static RestApiHttpStatus valueOf(@JsonProperty("statusCode") int statusCode)
{
    if (RestApiHttpStatus.FORBIDDEN.getStatusCode() == statusCode)
    {
        return RestApiHttpStatus.FORBIDDEN;
    } else if (RestApiHttpStatus.NOT_FOUND.getStatusCode() == statusCode)
    {
        return RestApiHttpStatus.NOT_FOUND;
    } else if (RestApiHttpStatus.INTERNAL_SERVER_ERROR.getStatusCode() == statusCode)
    {
        return RestApiHttpStatus.INTERNAL_SERVER_ERROR;
    } else if (RestApiHttpStatus.BAD_REQUEST.getStatusCode() == statusCode)
    {
        return RestApiHttpStatus.BAD_REQUEST;
    } else if (RestApiHttpStatus.UNAUTHORIZED.getStatusCode() == statusCode)
    {
        return RestApiHttpStatus.UNAUTHORIZED;
    } else if (RestApiHttpStatus.OK.getStatusCode() == statusCode)
    {
        return RestApiHttpStatus.OK;
    } else
    {
        throw new IllegalArgumentException("Invlaid RestApiStatus Code " + statusCode);
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12517445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档