users@jersey.java.net

[Jersey] Re: _at_XmlEnumValue is not recognized by Jackson

From: Pengfei Di <pengfei.di_at_match2blue.com>
Date: Fri, 8 Apr 2011 13:05:25 +0200

Hello Tatu,

thank you for your hint. I just found the reason.
I have to turn of the POJOMapping feature, otherwise the
JacksonJsonProvider instead of the AbstractRootElementProvider will be
used for JSON representation.

Now what I get ist: {"myEnum": "2"}
As you said, @XmlEnum is unfortunately not support.
What is confusing is that there is no statement from the jackson web
site, whether this annotation will be supported in the future or will not.

Pengfei

On 04/06/2011 06:38 PM, Tatu Saloranta wrote:
> On Wed, Apr 6, 2011 at 7:00 AM, Pengfei Di<pengfei.di_at_match2blue.com> wrote:
>> Hello,
>>
>> I am trying to write a JAXB class, that constains a field of enum type, into
>> JSON String. I tried with @XmlEnumValue annotation, but it doesn't take
>> effect.
>> The JAXB class looks like:
>>
>> @XmlRootElement
>> public class MyClass {
>>
>> @XmlEnum(Integer.class)
>> public enum MyEnum {
>> @XmlEnumValue("1") INACTIVE,
>> @XmlEnumValue("2") ACTIVE
>> }
>>
>> private MyEnum myEnum;
>>
>> public getMyEnum(){
>> return myEnum;
>> }
>> // setter
>> ...
>> }
>>
>> The expected JSON string is : {"myEnum":2}
>> But what I get is : {"myEnum":"ACTIVE"}
>>
>> Does Jackson support this @XmlEnum annotation? or did I do something wrong?
> Jackson does not support @XmlEnum -- enums will always be serialized
> as Strings, unless custom serializer is used -- but
> JaxbAnnotationIntrospector should support @XmlEnumValue for
> customizing actual values used. So this looks like a bug, as long as
> you have JAXB annotation support enabled (if not, you do need to
> enable support).
>
> -+ Tatu +-


-- 
Pengfei Di
Technology
match2blue software development GmbH
Leutragraben 1
07743 Jena
Tel: +49 3641 816 8092
Mobil: +49 1520 166 8691
Fax: +49 3641 573 3479
Email: pengfei.di_at_match2blue.com
Web  : www.match2blue.com
Blog : http://blog.match2blue.com
Registergericht: Amtsgericht Jena
Registernummer: HRB 503726
Geschäftsführerin: Stephanie Renda