Mr.*_*guy 5 php json jmsserializerbundle symfony-2.6
我正在创建一个symfony2项目并使用JMS序列化程序包来序列化我的对象以进行数据库存储(我知道这不是最好的方法).
但现在我的问题是,当我更改对象的属性并反序列化Json字符串时,JMS序列化程序忽略不存在的属性而不是抛出错误,这实际上很棒.但我想记录这样的事件.
下面是一个例子来说明我的问题
我的数据库中的Json字符串:
$dataToBeDeserialized = {"title":"testing123","text":"Lorem Ipsum"}
Run Code Online (Sandbox Code Playgroud)
识别TestClass:
/**
* @Type("string")
*/
protected title;
/**
* @Type("string")
*/
protected text;
Run Code Online (Sandbox Code Playgroud)
反序列化方法:
$this->serializer = SerializerBuilder::create()->build();
$this->serializer->deserialize($dataToBeDeserialized, 'TestClass', 'json');
Run Code Online (Sandbox Code Playgroud)
这导致:
TestClass {
title: "testing123",
text: "Lorem Ipsum"}
Run Code Online (Sandbox Code Playgroud)
但是,当我更改我的Testclass并重命名(或删除)标题时,让我们说"title2",反序列化器忽略Json字符串中的"title"属性.这导致:
TestClass {
title2: "",
text: "Lorem Ipsum"}
Run Code Online (Sandbox Code Playgroud)
那没问题.数据库中的数据是错误的.但我想记录这个问题.我该怎么做?如果可能的话,我不想搞乱JMS序列化程序的代码(因为我不能再更新它).在我的TestClass中查找空属性也不是最好的方法,因为它们可以为null.
小智 0
JMS 序列化器允许配置处理程序和事件侦听器,在您的情况下,我认为事件侦听器就足够了,因为您只需等待某种情况(不匹配的属性)的发生。此时您只想将其写入日志,因此课程如下:
今晚下班回家时我会写一个更详细的描述,但我想也许这已经可以帮助你了。
查看文档以获取更多详细信息: http://jmsyst.com/bundles/JMSSerializerBundle/master/configuration#event-dispatcher 默认订阅者可能会给您提供线索: https: //github.com/schmittjoh/serializer/tree /master/src/JMS/Serializer/EventDispatcher/订阅者
| 归档时间: |
|
| 查看次数: |
1163 次 |
| 最近记录: |