JmsSerializer - 取决于上下文的对象的不同序列化逻辑

时间:2018-03-21 08:25:34

标签: symfony jmsserializerbundle jms-serializer

我需要根据上下文创建不同的对象视图。

例如,我需要为MySQL和ElasticSearch序列化对象。对于ElasticSearch,我需要放置单词“def”而不是空字符串。我还希望对对象进行正确的反序列化,在从ElasticSearch中分解数据时将“def”替换为空字符串。但是对于MySQL我不想这样做 - 空字符串保持空字符串,不需要额外的逻辑。我怎么能用JmsSerializer做到这一点?

以下是一个例子:

<?php

use JMS\Serializer\Annotation\ExclusionPolicy;
use JMS\Serializer\Annotation\Expose;

/**
 *
 * @ExclusionPolicy("all")
 */
class MyClass
{
    /**
     * @Expose
     */
    private $property = '';
}

我需要将MyClass :: $属性序列化为MySQL的空字符串,作为ElasticSearch的“def”。从ElasticSearch反序列化“def”为空字符串。

UPD:我通过使用序列化订阅者来管理这个,但这确实是解决方法,因为它无法检测序列化上下文

0 个答案:

没有答案