[英]Symfony JsonResponse converts snake_case attributes to CamelCase
[英]Symfony Serializer doesn't convert an array of objects from camelCase to snake_case
有人可以帮我弄这个吗? 我正在尝试使用 Symfony Serializer 将对象序列化为 json,它确实将对象转换为 json,但它不会将对象数组从驼峰式大小写转换为蛇形大小写。
我目前在 Symfony 3.3 中使用默认的序列化程序
下面是我的代码。
framework:
serializer:
enabled: true
name_converter: 'serializer.name_converter.camel_case_to_snake_case'
services:
get_set_method_normalizer:
class:Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer
public: true
tags: [serializer.normalizer]
人员.php
class Person{
private $firstName;
private $lastName;
private $email;
//setters and getters
}
个人控制器.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 中的“服务”部分。
尝试为您的服务显式传递参数:
get_set_method_normalizer:
class:Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer
public: true
arguments: ['@serializer.mapping.class_metadata_factory', '@serializer.name_converter.camel_case_to_snake_case']
tags: [serializer.normalizer]
为camel_case_to_snake_case
添加别名更容易
services:
...
Symfony\Component\Serializer\NameConverter\NameConverterInterface: '@serializer.name_converter.camel_case_to_snake_case'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.