返回在使用@JsonCreator注释的方法中可选

时间:2017-06-23 12:29:28

标签: java spring-boot jackson

我有一个枚举方法@JsonCreator的枚举,它返回基于字符串代码的枚举类,如下所示:

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum Gender {

    MALE("M", "Male"), FEMALE("F", "Female");

    private final String code;
    private final String text;

    @JsonCreator
    public static Gender fromValue(String code) {
        for (Gender classType : Gender.values()) {
            if (classType.getCode().equals(code))
                return classType;
        }
        return null;
    }

}

这个工作正常,但我希望返回一个可选而不是null来避免将来出现任何空指针异常。

我搜索过Stackoverflow和Jackson文档,但找不到任何解决方案。

Jackson有没有办法注释一个返回带有@JsonCreator注释的可选方法?

1 个答案:

答案 0 :(得分:0)

我认为你可能会从错误的角度看待它。

@JsonCreator用于构造函数或工厂方法 - 你不会指望构造函数可选地为你返回对象 - 你会吗?

另一方面,如果你将enum对象包装在某个DTO类中,它可能会开箱即用。

public class Response {

   private Optional<Gender> gender;

   ...

}