No updates as of yet -- recovering from christmas holidays. As per my
earlier note, updates will be reflected on issue itself.

-+ Tatu +-


On Wed, Jan 3, 2018 at 12:21 PM, Remya <[email protected]> wrote:
> Hi,
>
> Any update on this fix? It would be really helpful if we get this in any of
> your newer versions. As of now, we are doing a workaround with the Map
> implementation to get this fixed.
>
> Regards,
> Remya
>
> On Friday, 15 December 2017 10:26:05 UTC-6, Remya wrote:
>>
>> 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]> 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].
>>> > 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.

Reply via email to