From 1a9afffae07beded789aed4ace61b5a4bf27b69a Mon Sep 17 00:00:00 2001 From: Thibaut THOUEMENT Date: Fri, 23 Aug 2024 16:27:03 +0200 Subject: [PATCH] Fix #20151 --- components/serializer.rst | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/components/serializer.rst b/components/serializer.rst index 61124e3f030..1dc245e8541 100644 --- a/components/serializer.rst +++ b/components/serializer.rst @@ -628,6 +628,40 @@ processes:: $anne = $normalizer->denormalize(['first_name' => 'Anne'], 'Person'); // Person object with firstName: 'Anne' +.. _using-underscored-method-names-for-camelized-attributes: + +snake_case to CamelCase +~~~~~~~~~~~~~~~~~~~~~~~ + +Symfony provides a built-in name converter designed to transform between +snake_case and CamelCased styles during serialization and deserialization +processes:: + + use Symfony\Component\Serializer\NameConverter\SnakeCaseToCamelCaseNameConverter; + use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; + + $normalizer = new ObjectNormalizer(null, new SnakeCaseToCamelCaseNameConverter()); + + class Person + { + public function __construct( + private string $fullName, + ) { + } + + public function getFullName(): string + { + return $this->fullName; + } + } + + $john = new Person('john_doe'); + $normalizer->normalize($john); + // ['full_name' => 'johnDoe']; + + $john = $normalizer->denormalize(['full_name' => 'johnDoe'], 'Person'); + // Person object with fullName: 'jonh_doe' + .. _serializer_name-conversion: Configure name conversion using metadata