[Serializer] Add support for stdClass

This commit is contained in:
Kévin Dunglas 2020-02-05 01:25:55 +01:00
parent 33e2735d14
commit d7bca80007
No known key found for this signature in database
GPG Key ID: 9D0C5D6EEB42C445
3 changed files with 19 additions and 1 deletions

View File

@ -262,7 +262,7 @@ abstract class AbstractObjectNormalizer extends AbstractNormalizer
array_unshift($attributes, $mapping->getTypeProperty());
}
if ($context['cache_key']) {
if ($context['cache_key'] && \stdClass::class !== $class) {
$this->attributesCache[$key] = $attributes;
}

View File

@ -62,6 +62,10 @@ class ObjectNormalizer extends AbstractObjectNormalizer
*/
protected function extractAttributes(object $object, string $format = null, array $context = [])
{
if (\stdClass::class === \get_class($object)) {
return array_keys((array) $object);
}
// If not using groups, detect manually
$attributes = [];

View File

@ -696,6 +696,20 @@ class ObjectNormalizerTest extends TestCase
$normalizer->normalize($obj, 'any')
);
}
public function testNormalizeStdClass()
{
$o1 = new \stdClass();
$o1->foo = 'f';
$o1->bar = 'b';
$this->assertSame(['foo' => 'f', 'bar' => 'b'], $this->normalizer->normalize($o1));
$o2 = new \stdClass();
$o2->baz = 'baz';
$this->assertSame(['baz' => 'baz'], $this->normalizer->normalize($o2));
}
}
class ProxyObjectDummy extends ObjectDummy