我正在创建一个 symfony2 项目并使用 JMS 序列化程序包来序列化我的对象以进行数据库存储(我知道这不是最好的方法)。
但是现在我的问题是,当我更改对象的属性并反序列化 Json 字符串时,JMS 序列化程序会忽略不存在的属性而不是抛出错误,这实际上很棒。然而,我想记录这样的事件。
下面是一个例子来说明我的问题
我的数据库中的 Json 字符串:
$dataToBeDeserialized = {"title":"testing123","text":"Lorem Ipsum"}
测试类:
/**
* @Type("string")
*/
protected title;
/**
* @Type("string")
*/
protected text;
反序列化方法:
$this->serializer = SerializerBuilder::create()->build();
$this->serializer->deserialize($dataToBeDeserialized, 'TestClass', 'json');
这导致:
TestClass {
title: "testing123",
text: "Lorem Ipsum"}
但是当我更改我的 Testclass 并将标题重命名(或删除)时,比如说“title2”,反序列化器会忽略 Json 字符串中的“title”属性。结果是:
TestClass {
title2: "",
text: "Lorem Ipsum"}
那么那里没有问题。数据库中的数据是错误的。但我想记录这个问题。我该怎么做?如果可能的话,我不想弄乱 JMS 序列化程序的代码(因为我不能再更新它了)。在我的 TestClass 中寻找空属性也不是最好的方法,因为它们可以为空。