Skip to content

Commit 1c1a5f9

Browse files
alaugksnicolas-grekas
authored andcommitted
[Serializer] Fix reindex normalizedData array in AbstractObjectNormalizer::denormalize()
1 parent 890d14d commit 1c1a5f9

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

Normalizer/AbstractObjectNormalizer.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ public function denormalize(mixed $data, string $type, string $format = null, ar
339339
$normalizedData = $this->removeNestedValue($serializedPath->getElements(), $normalizedData);
340340
}
341341

342-
$normalizedData = array_merge($normalizedData, $nestedData);
342+
$normalizedData = $normalizedData + $nestedData;
343343

344344
$object = $this->instantiateObject($normalizedData, $mappedClass, $context, new \ReflectionClass($mappedClass), $allowedAttributes, $format);
345345
$resolvedClass = ($this->objectClassResolver)($object);

Tests/Normalizer/AbstractObjectNormalizerTest.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -787,6 +787,32 @@ classMetadataFactory: new ClassMetadataFactory(new AnnotationLoader()),
787787
$normalized = $serializer->normalize(new DummyWithEnumUnion(EnumB::B));
788788
$this->assertEquals(new DummyWithEnumUnion(EnumB::B), $serializer->denormalize($normalized, DummyWithEnumUnion::class));
789789
}
790+
791+
public function testDenormalizeWithNumberAsSerializedNameAndNoArrayReindex()
792+
{
793+
$normalizer = new AbstractObjectNormalizerWithMetadata();
794+
795+
$data = [
796+
'1' => 'foo',
797+
'99' => 'baz',
798+
];
799+
800+
$obj = new class() {
801+
/**
802+
* @SerializedName("1")
803+
*/
804+
public $foo;
805+
806+
/**
807+
* @SerializedName("99")
808+
*/
809+
public $baz;
810+
};
811+
812+
$test = $normalizer->denormalize($data, $obj::class);
813+
$this->assertSame('foo', $test->foo);
814+
$this->assertSame('baz', $test->baz);
815+
}
790816
}
791817

792818
class AbstractObjectNormalizerDummy extends AbstractObjectNormalizer

0 commit comments

Comments
 (0)