Symfony、NelmioApiDoc、Swagger、OpenApi:使用 jsonSerialized 模型注释 class

Symfony,NelmioApiDoc,Swagger,OpenApi: Annotate a class with jsonSerialized model

我创建了一个小例子:

class Response
{
    /**
     * @OA\Property(ref=@Model(type=EncodedModel::class))
     */
    public RuntimeClass $filters;
}
class RuntimeClass implements JsonSerializable
{
    public int $field;
    public function jsonSerialize()
    {
        $model = new EncodedModel();
        $model->field = "$this->field";
        return $model;
    }
}
class EncodedModel {
    public string $field;
}

我有一个响应模型为 Response::class 的端点。
Response class 有一个类型为 RuntimeClass 的字段 $filters 但是当 json 编码时,由于 JsonSerializable 实现的功能,它显示为 class EncodedModel.

我的目标是在生成的 api 文档中获取字段 Response->filters 的类型 EncodedModel 而不是 RuntimeClass.

我直接用 @OA\Property(ref=@Model(type=EncodedModel::class)) 注释了这个字段,它确实有效,但我不太喜欢它。
正如我所见,这是一个 RuntimeClass class 责任告诉 json 编码结果为 EncodedModel class 而不是 RuntimeClass class。否则每次我使用 RuntimeClass 作为模型字段时,我都必须记住对其进行注释。

我希望像这样注释 class 也能一劳永逸,但事实并非如此 :/

/**
 * @Model(type=EncodedModel::class)
 */
class RuntimeClass implements JsonSerializable
...

有人知道这是否可行吗?

谢谢

------------------------编辑

对不起,我自己解决了,我正在解决,只是错误的注释:

/**
 * @OA\Schema(ref=@Model(type=EncodedModel::class))
 */
class RuntimeClass implements JsonSerializable
...

还是谢谢你

对不起,我自己解决了,我正要解决,只是错误的注释:

/**
 * @OA\Schema(ref=@Model(type=EncodedModel::class))
 */
class RuntimeClass implements JsonSerializable
...