Resposta real:
O desserializador padrão para enums usa .name()para desserializar, portanto, não está usando o @JsonValue. Portanto, como @OldCurmudgeon apontou, você precisa passar {"event": "FORGOT_PASSWORD"}para corresponder ao .name()valor.
Uma outra opção (supondo que você deseja que os valores de gravação e leitura json sejam os mesmos) ...
Mais informações:
Existe (ainda) outra maneira de gerenciar o processo de serialização e desserialização com Jackson. Você pode especificar essas anotações para usar seu próprio serializador e desserializador personalizado:
@JsonSerialize(using = MySerializer.class)
@JsonDeserialize(using = MyDeserializer.class)
public final class MyClass {
...
}
Então você tem que escrever MySerializere MyDeserializerque se parece com isto:
MySerializer
public final class MySerializer extends JsonSerializer<MyClass>
{
@Override
public void serialize(final MyClass yourClassHere, final JsonGenerator gen, final SerializerProvider serializer) throws IOException, JsonProcessingException
{
}
}
MyDeserializer
public final class MyDeserializer extends org.codehaus.jackson.map.JsonDeserializer<MyClass>
{
@Override
public MyClass deserialize(final JsonParser parser, final DeserializationContext context) throws IOException, JsonProcessingException
{
return null;
}
}
Por último, especialmente para fazer isso em um enum JsonEnumque serializa com o método getYourValue(), seu serializador e desserializador podem ter a seguinte aparência:
public void serialize(final JsonEnum enumValue, final JsonGenerator gen, final SerializerProvider serializer) throws IOException, JsonProcessingException
{
gen.writeString(enumValue.getYourValue());
}
public JsonEnum deserialize(final JsonParser parser, final DeserializationContext context) throws IOException, JsonProcessingException
{
final String jsonValue = parser.getText();
for (final JsonEnum enumValue : JsonEnum.values())
{
if (enumValue.getYourValue().equals(jsonValue))
{
return enumValue;
}
}
return null;
}
{"Event":"FORGOT_PASSWORD"}? Observe os limites em Evento e FORGOT_PASSWORD.