我正在寻找一种使用JMS Serializer从json数据中保存PHP对象的方法。
我知道反序列化方法就是答案,但困难在于我想使用不同的属性名称映射字段。
实施例: 我有一个代表我的用户的json对象:
{"Id": 1, "FirstName": "John", "LastName": "Doe"}
我的用户有一个PHP类:
<?php
namespace Model;
class User
{
private $id;
private $firstName;
private $lastName;
}
如你所见,案例不匹配,所以我有一个错误,说属性$ Id不存在,但事实是我不想定义这个属性,因为我想以另一种方式映射它。
Extensivly,我希望在某些情况下将{“numeroTelephone”:“0123456789”}与属性$ phoneNumber匹配,所以我想使用一种非常灵活的方式。
我尝试使用SerializedName但它似乎不像我想的那样工作。 我试图自定义反序列化方法,但我有点被困。
[编辑] 我正在使用带有注释的SerializedName,但是当你覆盖Symfony配置中的默认行为(parameters.jms_serializer.camel_case_naming_strategy.class:JMS \ Serializer \ Naming \ IdenticalPropertyNamingStrategy)时它看起来被禁用了但是我终于通过{{3 }}。 但它没有帮助我,因为SerializedName注释以相同的方式处理序列化和反序列化,我想要不同的行为。
例如,我想用json字符串id
水合对象属性{"Id": 1}
,然后将其序列化为{"id": 1}
。我想知道是否有办法以不同的方式处理反序列化和序列化。我找到了https://github.com/schmittjoh/serializer/issues/334#issuecomment-190651143的方法,但我无法按照自己的意愿使用它。
感谢您的回答:)
纪尧姆