diff --git a/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php index 1717426161d49..069d2e3935f62 100644 --- a/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php @@ -339,7 +339,7 @@ public function denormalize(mixed $data, string $type, string $format = null, ar $normalizedData = $this->removeNestedValue($serializedPath->getElements(), $normalizedData); } - $normalizedData = array_merge($normalizedData, $nestedData); + $normalizedData = $normalizedData + $nestedData; $object = $this->instantiateObject($normalizedData, $mappedClass, $context, new \ReflectionClass($mappedClass), $allowedAttributes, $format); $resolvedClass = ($this->objectClassResolver)($object); diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php b/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php index 61345a414eea4..8eb77718c4ac9 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php @@ -787,6 +787,32 @@ classMetadataFactory: new ClassMetadataFactory(new AnnotationLoader()), $normalized = $serializer->normalize(new DummyWithEnumUnion(EnumB::B)); $this->assertEquals(new DummyWithEnumUnion(EnumB::B), $serializer->denormalize($normalized, DummyWithEnumUnion::class)); } + + public function testDenormalizeWithNumberAsSerializedNameAndNoArrayReindex() + { + $normalizer = new AbstractObjectNormalizerWithMetadata(); + + $data = [ + '1' => 'foo', + '99' => 'baz', + ]; + + $obj = new class() { + /** + * @SerializedName("1") + */ + public $foo; + + /** + * @SerializedName("99") + */ + public $baz; + }; + + $test = $normalizer->denormalize($data, $obj::class); + $this->assertSame('foo', $test->foo); + $this->assertSame('baz', $test->baz); + } } class AbstractObjectNormalizerDummy extends AbstractObjectNormalizer