在Java SpringBoot中将枚举多个值转换为Json

azi*_*haw 5 java rest spring-boot

这里我有一个休息控制器

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

我的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;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我从控制器收到响应时,我得到的结果是

"LOGIN_SUCCESS"
Run Code Online (Sandbox Code Playgroud)

我需要的是

{
    "id": "0",
    "message": "success"   
}
Run Code Online (Sandbox Code Playgroud)

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

Fed*_*oni 5

您必须使用 JsonFormat 注释

@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum ResponseBack {
...
Run Code Online (Sandbox Code Playgroud)

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

@JsonValue
public String getMessage() {
    return message;
}
Run Code Online (Sandbox Code Playgroud)