Hi,

As I mentioned in one of my earlier responses, had also tried adding this 
configuration - 
objectMapper.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, 
true);

This resulted in the Unknown attribute KEY to be deserialized as "null". 
(i.e., instead of Test=No, it gets deserialized as null=No)

My intention is to ignore this attribute completely during deserialization. 
Please let me know if that would be possible by any means.

Meanwhile, would try READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE

Thanks!

On Monday, 11 December 2017 23:35:52 UTC-6, Tatu Saloranta wrote:
>
> On Mon, Dec 11, 2017 at 8:37 PM, Remya <[email protected] <javascript:>> 
> wrote: 
> > 
> > Thanks for the response. 
> > 
> > That was just a sample that I posted. The cases do match and yes, my 
> > requirement is when a new attribute - say, 'Test' comes in the Json, I 
> want 
> > the mapper to ignore that field and proceed with de-serializing the 
> > remaining fields that has a match in the Enum, rather than throwing the 
> > exception. 
> > 
> > What should I do, so that it ignores the attributes which does not have 
> an 
> > entry in the Enum? 
>
> You probably want to enable one of following `DeserializationFeature`s: 
>
> * `READ_UNKNOWN_ENUM_VALUES_AS_NULL` 
> * `READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE` (uses Enum value 
> annotated with `com.fasterxml.jackson.annotation.JsonEnumDefaultValue`) 
>
> -+ Tatu +- 
>
> > 
> > Regards, 
> > Remya 
> > 
> > On Monday, 11 December 2017 22:21:32 UTC-6, Tatu Saloranta wrote: 
> >> 
> >> In this case enum names do not match wrt casing? ("count" key, but enum 
> >> `Count`; nor is there enum `Test` defined) 
> >> So it seems to me exception is due to simple mismatch between keys 
> used, 
> >> names of Enums. 
> >> 
> >> -+ Tatu +- 
> >> 
> >> 
> >> On Mon, Dec 11, 2017 at 7:03 PM, Remya <[email protected]> wrote: 
> >>> 
> >>> 
> >>> Sample of JSON String would look like this. 
> >>> 
> >>> String 
> >>> 
> jsonText="{\"cartId\":\"31028\",\"userId\":\"106784\",\"attributes\":{\"count\":\"1\",\"amount\":\"10\",\"email\":\"N\",\"Test\":\"No\",\"phone\":\"N\"}}";
>  
>
> >>> 
> >>> The JSON maps to a Cart class, which holds these attributes as a Map. 
> >>> 
> >>> public class Cart { 
> >>> 
> >>>   private String cartId; 
> >>>   private String userId; 
> >>>   private Map<Attributes,String> attributes; 
> >>> 
> >>> } 
> >>> 
> >>> Attributes map to the Enum, as given below. 
> >>> 
> >>> public enum Attributes { 
> >>>   Count(0), 
> >>>   Amount(1), 
> >>>   Email(2), 
> >>>   Phone(3); 
> >>> 
> >>>   private final int value; 
> >>> 
> >>>   private Attributes(int value) { 
> >>>     this.value = value; 
> >>>   } 
> >>> 
> >>>   public int getValue() { 
> >>>     return value; 
> >>>   } 
> >>> 
> >>>   public static Attributes findByValue(int value) { 
> >>>     switch (value) { 
> >>>       case 0: 
> >>>         return Count; 
> >>>       case 1: 
> >>>         return Amount; 
> >>>       case 2: 
> >>>         return Email; 
> >>>       case 3: 
> >>>         return Phone; 
> >>>       default: 
> >>>         return null; 
> >>>     } 
> >>>   } 
> >>> } 
> >>> 
> >>> Thanks! 
> >>> 
> >>> On Monday, 11 December 2017 17:37:34 UTC-6, Tatu Saloranta wrote: 
> >>>> 
> >>>> Ok, so .... what are classes involved? And input JSON? 
> >>>> 
> >>>> -+ Tatu +- 
> >>>> 
> >>>> On Mon, Dec 11, 2017 at 1:50 PM, Remya <[email protected]> wrote: 
> >>>>> 
> >>>>> I am trying to deserialize a JSON string using jackson-databind 
> >>>>> Objectmapper which has a set of Enum attributes within it. 
> >>>>> 
> >>>>> 
> >>>>> This happens when an unknown attribute, which is not defined in the 
> >>>>> enum comes in the JSON. Please find below the object mapper 
> configuration 
> >>>>> that I am using. 
> >>>>> 
> >>>>>     ObjectMapper objectMapper = new ObjectMapper(); 
> >>>>>     objectMapper.setVisibility(PropertyAccessor.ALL, 
> Visibility.NONE); 
> >>>>>     objectMapper.setVisibility(PropertyAccessor.FIELD, 
> Visibility.ANY); 
> >>>>>     objectMapper.setSerializationInclusion(Include.NON_NULL); 
> >>>>> 
> >>>>> 
> objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, 
> >>>>> false); 
> >>>>> 
> >>>>> But, deserialization (objectMapper.readValue(jsonText, .class);) 
> throws 
> >>>>> this error. "Test" is the unknown attribute that comes in the JSON 
> String to 
> >>>>> be deserialized. 
> >>>>> 
> >>>>> com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot 
> >>>>> deserialize Map key of type com..* from String "Test": not a valid 
> >>>>> representation, problem: 
> >>>>> (com.fasterxml.jackson.databind.exc.InvalidFormatException) Cannot 
> >>>>> deserialize Map key of type com.... from String "Test": not one of 
> values 
> >>>>> excepted for Enum class: [ ] 
> >>>>> 
> >>>>> 
> >>>>> Could someone please help me out with this issue? 
> >>>>> 
> >>>>> 
> >>>>> Thanks! 
> >>>>> 
> >>>>> -- 
> >>>>> You received this message because you are subscribed to the Google 
> >>>>> Groups "jackson-user" group. 
> >>>>> To unsubscribe from this group and stop receiving emails from it, 
> send 
> >>>>> an email to [email protected]. 
> >>>>> To post to this group, send email to [email protected]. 
> >>>>> For more options, visit https://groups.google.com/d/optout. 
> >>>> 
> >>>> 
> >>> -- 
> >>> You received this message because you are subscribed to the Google 
> Groups 
> >>> "jackson-user" group. 
> >>> To unsubscribe from this group and stop receiving emails from it, send 
> an 
> >>> email to [email protected]. 
> >>> To post to this group, send email to [email protected]. 
> >>> For more options, visit https://groups.google.com/d/optout. 
> >> 
> >> 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "jackson-user" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to [email protected] <javascript:>. 
> > To post to this group, send email to [email protected] 
> <javascript:>. 
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to