Сообщение об ошибке говорит о том, что вы должны указать его в массиве defaultContext, который вы можете указать в качестве третьего параметра в конструкторе.
public function __construct(ClassMetadataFactoryInterface
$classMetadataFactory = null, NameConverterInterface $nameConverter = null, array $defaultContext = array())
в вашем случае это будет:
$encoders = array(new JsonEncoder());
$normalizer = new JsonSerializableNormalizer(null,null,array(JsonSerializableNormalizer::CIRCULAR_REFERENCE_HANDLER=>function ($object) {
return (string)$object;
}));
EDIT:
Я использовал JsonSerializableNormalizer, а вы ObjectNormalizer, тогда определение конструктора:
public function __construct(ClassMetadataFactoryInterface $classMetadataFactory = null, NameConverterInterface $nameConverter = null, PropertyAccessorInterface $propertyAccessor = null, PropertyTypeExtractorInterface $propertyTypeExtractor = null, ClassDiscriminatorResolverInterface $classDiscriminatorResolver = null, callable $objectClassResolver = null, array $defaultContext = array())
и используется в вашей программе это должно быть:
$normalizer = new ObjectNormalizer(null,null,null,null,null,null,array(ObjectNormalizer::CIRCULAR_REFERENCE_HANDLER=>function ($object) {
return (string)$object;
}));