@JsonDeserialize在接口上不起作用

时间:2017-12-27 16:26:55

标签: java enums jackson deserialization

我的@JsonFormat和@JsonDeserialize的一些枚举界面:

@Entity
@Table(name = "clients")
class ClientJpa {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "generator")
    @SequenceGenerator(name="generator", sequenceName = "cliSeq", allocationSize = 1)    
    var surrogateKey: Int = _
    var code: String = _
    var name: String = _
}

我将它用于这样的枚举:

@JsonFormat(shape = JsonFormat.Shape.OBJECT)
@JsonDeserialize(using = JsonEnumDeserializer.class)
public interface JsonEnum {
    @JsonProperty("symbol")
    String getSymbol();

    @JsonProperty("name")
    String name();
}

当我序列化public enum MyEnum implements JsonEnum { VALUE1("v1"), VALUE2("v2"), VALUE3("v3"); private final String symbol; } 时,我得到了正确的对象。但是,当我想将对象反序列化为MyEnum时,我的自定义反序列化器(JsonEnumDeserializer)不会被调用。

如果我在MyEnum之上添加@JsonDeserialize,那么它工作正常,但我希望为我的所有实现MyEnum的枚举设置通用反序列化器。

0 个答案:

没有答案