有人可以帮我解决这个问题吗? 我正在尝试使用 Symfony Serializer 将对象序列化为 json,它会将对象转换为 json,但不会将对象数组从 camelCase 转换为 snake_case。
我目前在 Symfony 3.3 中使用默认的 Serializer
下面是我的代码。
应用程序/配置/config.yml
framework:
serializer:
enabled: true
name_converter: 'serializer.name_converter.camel_case_to_snake_case'
应用程序/配置/services.yml
services:
get_set_method_normalizer:
class:Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer
public: true
tags: [serializer.normalizer]
Persons.php
class Person{
private $firstName;
private $lastName;
private $email;
//setters and getters
}
PersonController.php
class PersonController extends Controller {
/**
* @Route("api/person")
* @Method("POST")
*/
public function person(){
$person = new Person();
$person->setFirstName("test");
$person->setLastName("test");
$person->setEmail("test@test.com");
$person1 = new Person();
$person1->setFirstName("test 1");
$person1->setLastName("test 1");
$person1->setEmail("test1@test.com");
$arr = array($person, $person1);
$serializer = $this->get("serializer");
return new Response($serializer->serialize($arr,"json"));
}
}
下面是当前输出。
[
{
"firstName":"test",
"lastName":"test"
"email":"test@test.com"
},
{
"firstName":"test 1",
"lastName":"test 1"
"email":"test@test.com"
}
]
预期输出为:
[
{
"first_name":"test",
"last_name":"test",
"email":"test@test.com"
},
{
"first_name":"test 1",
"last_name":"test 1",
"email":"test1@test.com"
}
]
最佳答案
对于 symfony 4 这对我有用:
Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer:
public: true
arguments: ['@serializer.mapping.class_metadata_factory', '@serializer.name_converter.camel_case_to_snake_case']
tags: [serializer.normalizer]
将该代码放入您的 app/config/services.yaml 中的“服务”部分。
关于php - Symfony Serializer 不会将对象数组从 camelCase 转换为 snake_case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47487686/