gpt4 book ai didi

symfony - JMSSerializerBundle 上的自定义处理程序被忽略

转载 作者:行者123 更新时间:2023-12-04 07:53:07 26 4
gpt4 key购买 nike

我正在尝试为 JMS Serializer Bundle 使用自定义处理程序

class CustomHandler implements SubscribingHandlerInterface
{
public static function getSubscribingMethods()
{
return array(
array(
'direction' => GraphNavigator::DIRECTION_SERIALIZATION,
'format' => 'json',
'type' => 'integer',
'method' => 'serializeIntToJson',
),
);
}

public function serializeIntToJson(JsonSerializationVisitor $visitor, $int, array $type, Context $context)
{
die("GIVE ME SOMETHING");
}
}

这什么都不做,也不会死。这就是我注册处理程序的方式
$serializer = SerializerBuilder::create()
->configureHandlers(function(HandlerRegistry $registry) {
$registry->registerSubscribingHandler(new MyHandler());
})
->addDefaultHandlers()
->build();

$json = $serializer->serialize($obj, 'json');

我的处理程序从未被调用,我无法操作序列化数据。

最佳答案

您需要为此处理程序创建服务:

custom_jms_handler:
class: MyBundle\Serializer\CustomHandler
tags:
- { name: jms_serializer.subscribing_handler }

然后确保使用注册的 JMS 序列化服务
$json = $this->get('jms_serializer')->serialize($obj, 'json');

关于symfony - JMSSerializerBundle 上的自定义处理程序被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27475801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com