Skip to content

Commit 4303a89

Browse files
committed
Fix #20151
1 parent dae3dfe commit 4303a89

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

components/serializer.rst

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -628,6 +628,40 @@ processes::
628628
$anne = $normalizer->denormalize(['first_name' => 'Anne'], 'Person');
629629
// Person object with firstName: 'Anne'
630630

631+
.. _using-underscored-method-names-for-camelized-attributes:
632+
633+
snake_case to CamelCase
634+
~~~~~~~~~~~~~~~~~~~~~~~
635+
636+
Symfony provides a built-in name converter designed to transform between
637+
snake_case and CamelCased styles during serialization and deserialization
638+
processes::
639+
640+
use Symfony\Component\Serializer\NameConverter\SnakeCaseToCamelCaseNameConverter;
641+
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
642+
643+
$normalizer = new ObjectNormalizer(null, new SnakeCaseToCamelCaseNameConverter());
644+
645+
class Person
646+
{
647+
public function __construct(
648+
private string $fullName,
649+
) {
650+
}
651+
652+
public function getFullName(): string
653+
{
654+
return $this->fullName;
655+
}
656+
}
657+
658+
$john = new Person('john_doe');
659+
$normalizer->normalize($john);
660+
// ['first_name' => 'johnDoe'];
661+
662+
$john = $normalizer->denormalize(['first_name' => 'johnDoe'], 'Person');
663+
// Person object with firstName: 'jonh_doe'
664+
631665
.. _serializer_name-conversion:
632666

633667
Configure name conversion using metadata

0 commit comments

Comments
 (0)