Thank you!

On Thursday, 14 December 2017 17:35:32 UTC-6, Tatu Saloranta wrote:
>
> Thank you! 
>
> If and when there is an update, it will be added in that issue, and 
> you should be notified by github (as per settings 
> you have for your account; default will send an email on issues you 
> have created I think). 
>
> -+ Tatu +- 
>
>
> On Wed, Dec 13, 2017 at 8:50 PM, Remya <[email protected] <javascript:>> 
> wrote: 
> > Hi, 
> > 
> > I have opened the issue - 
> > https://github.com/FasterXML/jackson-databind/issues/1859 for this. 
> > Please let me know when you have the fix available. 
> > 
> > Thanks, 
> > Remya 
> > 
> > 
> > On Tuesday, 12 December 2017 23:45:01 UTC-6, Remya wrote: 
> >> 
> >> 
> >> Thanks much! 
> >> 
> >> I would post this as an issue. 
> >> 
> >> Regards, 
> >> Remya 
> >> 
> >> On Tuesday, 12 December 2017 17:03:47 UTC-6, Tatu Saloranta wrote: 
> >>> 
> >>> On Tue, Dec 12, 2017 at 8:11 AM, Remya <[email protected]> wrote: 
> >>> > 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 
> >>> 
> >>> Ah. The challenge here is that it is not an Enum-valued property, but 
> >>> EnumMap (or, equivalently, EnumSet) valued 
> >>> property, meaning that deserializer for the Map would need to be aware 
> >>> of the special handling. 
> >>> And for general Maps there just isn't any way to declare that there 
> >>> are invalid entries that are to be ignored -- 
> >>> invalid entries are typicallt hard failures. 
> >>> 
> >>> However, it seems like a reasonable improvement idea to allow 
> >>> specialized handling, since I think there is 
> >>> a dedicated serializer (due to special requirements for constructing 
> >>> EnumMap). 
> >>> 
> >>> Could you file am issue for `jackson-databind` for requesting handling 
> >>> of unknown/unmapped Enum keys, 
> >>> wrt `DeserializationFeature`s discussed here? 
> >>> To me it seems reasonable that "as null" would result in "ignore" 
> >>> (many Map types do not allow `null` keys, 
> >>> specifically EnumMap doesn't). This could even be implemented in a 
> >>> patch for 2.9 (if I have time) since it 
> >>> does not require API changes. 
> >>> 
> >>> -+ Tatu +- 
> >>> 
> >>> 
> >>> > 
> >>> > 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]> 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]. 
> >>> >> > 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