Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
bug #36601 [Serializer] do not transform empty \Traversable to Array …
…(soyuka) This PR was merged into the 4.4 branch. Discussion ---------- [Serializer] do not transform empty \Traversable to Array | Q | A | ------------- | --- | Branch? | 4.4 | Bug fix? | yes | New feature? | no <!-- please update src/**/CHANGELOG.md files --> | Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tickets | na | License | MIT | Doc PR | na Today, using `PRESERVE_EMPTY_OBJECTS` ([introduced in 4.0](f28e826)), the JSON serialization of: ```php <?php $object = []; $object['foo'] = new \ArrayObject(); $object['bar'] = new \ArrayObject(['notempty']); $object['baz'] = new \ArrayObject(['nested' => new \ArrayObject()]); ``` Outputs: ```json {"foo":[],"bar":["notempty"],"baz":{"nested":[]}} ``` Instead of the expected: ```json {"foo":{},"bar":["notempty"],"baz":{"nested":{}}} ``` This issue comes from the Serializer that transforms `Traversable` to an Array [here](https://github.com/symfony/symfony/blob/11a707200d65d1142b681100fdfd5a9782f93f02/src/Symfony/Component/Serializer/Serializer.php#L159). Also, the `AbstractObjectNormalizer` [doesn't support Traversable](https://github.com/symfony/symfony/blob/11a707200d65d1142b681100fdfd5a9782f93f02/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php#L134), but he allows to preserve empty objects. I propose this patch where the fix doesn't transform a `Traversable` to an Array. I see another way to patch this in which we could allow empty Traversable in the `AbstractObjectNormalizer` (not sure it's better though). See attached [other-fix.patch](https://github.com/symfony/symfony/files/4539865/other-fix.log) to see the alternative patch. Commits ------- e5c2029 Fix serializer do not transform empty \Traversable to Array
- Loading branch information