相关疑难解决方法(0)

用杰克逊对enum进行反序列化

我正在尝试并且没有用Jackson 2.5.4反序列化枚举,我在那里看不到我的情况.我的输入字符串是驼峰式的,我想简单地映射到标准的Enum约定.

@JsonFormat(shape = JsonFormat.Shape.STRING)
public enum Status {
    READY("ready"),
    NOT_READY("notReady"),
    NOT_READY_AT_ALL("notReadyAtAll");

    private static Map<String, Status> FORMAT_MAP = Stream
            .of(Status.values())
            .collect(toMap(s -> s.formatted, Function.<Status>identity()));

    private final String formatted;

    Status(String formatted) {
        this.formatted = formatted;
    }

    @JsonCreator
    public Status fromString(String string) {
        Status status = FORMAT_MAP.get(string);
        if (status == null) {
            throw new IllegalArgumentException(string + " has no corresponding value");
        }
        return status;
    }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过@JsonValue一个无用的吸气剂,这是我在别处看到的一个选项.他们都爆炸了:

com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not construct instance of ...Status from String value 'ready': value not …
Run Code Online (Sandbox Code Playgroud)

java json jackson

50
推荐指数
5
解决办法
6万
查看次数

标签 统计

jackson ×1

java ×1

json ×1