如何在Rust中拆分枚举变量及其内容以生成正确的JSON模式

问题描述

使用schemars,可以从Rust代码生成JSON模式。

考虑以下JSON示例:

use schemar::JsonSchema;
use serde::Serialize;

#[derive(Serialize,JsonSchema)]
struct Cause {
    _type: EventType,payload: EventPayload,}

#[derive(Serialize,JsonSchema)]
enum EventType {
    EVT1 { param1: String,param2: String },EVT2 { param1: String },JsonSchema)]
enum EventPayload {
    // ?
}

以及用于生成模式的Rust代码

EventType

EventType在变量名称中包含事件的类型,有效负载也由EventPayload指定。 EventType是多余的。

是否有可能配置Serde,以便将type变体的名称用作payload,将其内容用作payloadEventType取决于_type

我期望什么?

  • EventType仅限于payload
  • 的变体
  • cause的{​​{1}}直接依赖于_type
  • 理想情况下,模式生成会将EventType变体的名称用作_type,并从变体内容获取payload

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)