首页 > 解决方案 > 在Java SpringBoot中将枚举多个值转换为Json

问题描述

在这里我有一个休息控制器

 @RequestMapping(value = "/mobileNumber", method = RequestMethod.POST, produces = {
                MediaType.APPLICATION_JSON_VALUE })
        public ResponseEntity<ResponseBack> sentResponse() {
    
            return new ResponseEntity<ResponseBack>(ResponseBack.LOGIN_SUCCESS, HttpStatus.ACCEPTED);
    
        }

我的Enum班级

public enum ResponseBack {
    LOGIN_SUCCESS(0, " success"), LOGIN_FAILURE(1, " failure");

    private long id;
    private final String message;

    // Enum constructor
    ResponseBack(long id, String message) {
        this.id = id;
        this.message = message;
    }

    public long getId() {
        return id;
    }

    public String getMessage() {
        return message;
    }
}

当我从控制器得到响应时,我得到它

"LOGIN_SUCCESS"

我需要的是

{
    "id": "0",
    "message": "success"   
}

如何将其反序列化为 Json 并发送响应,是否有任何注释。请帮忙,谢谢。

标签: javaspring-bootrest

解决方案


您必须使用 JsonFormat 注释

@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum ResponseBack {
...

所以你告诉这个枚举的 Json 表示将是整个对象。如果您希望返回特定字段(例如消息字段),您可以使用 JsonValue 批注对该方法进行批注

@JsonValue
public String getMessage() {
    return message;
}

推荐阅读