वास्तविक उत्तर:
एनम के लिए डिफ़ॉल्ट डिसेरिएलाइज़र डिसेरिएलाइज़ करने के लिए उपयोग करता .name()
है, इसलिए यह उपयोग नहीं कर रहा है @JsonValue
। इसलिए @OldCurmudgeon ने बताया कि आपको मूल्य {"event": "FORGOT_PASSWORD"}
से मेल खाने के लिए पास होना होगा .name()
।
एक अन्य विकल्प (यह मानते हुए कि आप लिखना और पढ़ना चाहते हैं कि मान एक ही हो) ...
और जानकारी:
जैक्सन के साथ क्रमांकन और deserialization प्रक्रिया का प्रबंधन करने का एक और तरीका है (अभी तक)। आप इन एनोटेशन को अपने स्वयं के कस्टम क्रमिक और डेज़राइज़र का उपयोग करने के लिए निर्दिष्ट कर सकते हैं:
@JsonSerialize(using = MySerializer.class)
@JsonDeserialize(using = MyDeserializer.class)
public final class MyClass {
...
}
फिर आपको लिखना है MySerializer
और MyDeserializer
इस तरह दिखना है:
MySerializer
public final class MySerializer extends JsonSerializer<MyClass>
{
@Override
public void serialize(final MyClass yourClassHere, final JsonGenerator gen, final SerializerProvider serializer) throws IOException, JsonProcessingException
{
// here you'd write data to the stream with gen.write...() methods
}
}
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
{
// then you'd do something like parser.getInt() or whatever to pull data off the parser
return null;
}
}
अंतिम रूप से, विशेष रूप JsonEnum
से विधि के साथ क्रमबद्ध करने वाले किसी एनम के लिए ऐसा करने के लिए getYourValue()
, आपका धारावाहिक और डेज़राइज़र इस तरह दिख सकता है:
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"}
? घटना और FORGOT_PASSWORD दोनों पर कैप नोट करें।