dunglas/doctrine-json-odm

Deserialization of enum properties fails

Guite opened this issue · 2 comments

Guite commented

Hello,

trying to replace a Mongo document using this bundle. First steps look promising, but currently denormalize fails because the payload contains some enum values.

Cannot instantiate enum Some\Namespace\Label

Error
in vendor/symfony/serializer/Normalizer/AbstractNormalizer.php (line 407)
in vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php -> instantiateObject (line 244)
in vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php -> instantiateObject (line 323)
in vendor/symfony/serializer/Serializer.php (line 227)
in vendor/dunglas/doctrine-json-odm/src/SerializerTrait.php (line 52)
in vendor/dunglas/doctrine-json-odm/src/TypedSerializerTrait.php -> doDenormalize (line 31)
in vendor/symfony/serializer/Normalizer/ArrayDenormalizer.php -> denormalize (line 56)
in vendor/symfony/serializer/Serializer.php (line 227)
in vendor/dunglas/doctrine-json-odm/src/SerializerTrait.php (line 58)
in vendor/dunglas/doctrine-json-odm/src/TypedSerializerTrait.php -> doDenormalize (line 31)
in vendor/dunglas/doctrine-json-odm/src/SerializerTrait.php -> denormalize (line 50)
in vendor/dunglas/doctrine-json-odm/src/TypedSerializerTrait.php -> doDenormalize (line 31)
in vendor/symfony/serializer/Normalizer/ArrayDenormalizer.php -> denormalize (line 56)
in vendor/symfony/serializer/Serializer.php (line 227)
in vendor/dunglas/doctrine-json-odm/src/SerializerTrait.php (line 58)
in vendor/dunglas/doctrine-json-odm/src/TypedSerializerTrait.php -> doDenormalize (line 31)
in vendor/dunglas/doctrine-json-odm/src/SerializerTrait.php -> denormalize (line 50)
in vendor/dunglas/doctrine-json-odm/src/TypedSerializerTrait.php -> doDenormalize (line 31)
in vendor/symfony/serializer/Serializer.php -> denormalize (line 145)
in vendor/dunglas/doctrine-json-odm/src/Type/JsonDocumentType.php -> deserialize (line 112)

Do you have any idea or best practice how to cope with such cases?

I guess that's not related to this type. If you want the serializer to be able to handle your enums (afaik only backed enums are supported by default), you'll have to register your own normalizer :)

Guite commented

Works for me with the enum-related fix from #118