【发布时间】:2019-04-19 15:05:11
【问题描述】:
我在 Symfony4 上创建了一个 REST API,所以我想用 Symfony4 的默认序列化器序列化我的实体。
但是我的实体有不寻常的属性名称,这使得序列化程序给我带来不好的结果。
我尝试实现NameConverterInterface,也尝试了CamelCaseToSnakeCaseNameConverter,但没有好的结果...
我的应用程序中的每个实体都有这种属性,所以@annotation 的解决方案帮不了我
class Product implements EntityInterface
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer", name="PROD_PKEY")
*/
private $PROD_PKEY;
/**
* @ORM\Column(type="string", length=50)
*/
private $PROD_Name;
/**
* @ORM\Column(type="string", length=50)
*/
private $PROD_Code;
以及我如何使用序列化程序:
$product = new Product();
$product->setPRODName("Name");
$product->setPRODCode("Code");
$json = $this->serializer->serialize($product, 'json');
$json 的内容是:
{
"pRODName": "Name",
"pRODCode": "Code",
}
但我希望是这样的:
{
"PROD_Name": "Name",
"PROD_Code": "Code",
}
只是等于我实体中的属性名称,我不明白为什么第一个字母变成小写而我的下划线消失了......
感谢您的帮助!
【问题讨论】:
-
如果你使用像 Symfony 这样的框架,你应该遵循它的Naming Conventions,无论如何你的方式可能会产生更多意想不到的行为(和令人头疼的问题)。我希望您可以更改该命名类型。祝你好运。
-
unusual attribute names- 总有时间改进,所以请慢慢来!
标签: php symfony symfony4 serialization