使用JMS Serializer从json保护PHP对象

时间:2017-06-01 10:32:44

标签: php json symfony jmsserializerbundle jms-serializer

我正在寻找一种使用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的方法,但我无法按照自己的意愿使用它。

感谢您的回答:)

纪尧姆

0 个答案:

没有答案