小编TPo*_*uen的帖子

如何将复杂的 JSON 反序列化为 Rust 类型?

我正在尝试构建一个 Tauri 应用程序。当尝试将数据从我的前端反序列化到我的 Rust 后端(以 JSON 形式传递)时,我遇到一个错误,我不知道如何修复。

JSON 遵循以下架构:

{
    positive: ICriterion[],
    negative: ICriterion[],
}

ICriterion {
    name: 'tribunal'|appealCourt'|'group'|'role'|'prevalent_domain'|'placed',
    label: string,
    value: number[]|string|bool
}
Run Code Online (Sandbox Code Playgroud)

value我们尝试使用 Rust Enum实现字段的联合类型:

#[derive(Deserialize)]
pub struct SortDataInput {
    positive: Vec<Criterion>,
    negative: Vec<Criterion>,
}

#[derive(Deserialize)]
pub enum CriterionValue {
    IntegerArray(Vec<i32>),
    Name(String),
    Boolean(bool),
}

#[derive(Deserialize)]
pub struct Criterion {
    name: String,
    value: CriterionValue,
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试执行我的方法时,出现错误,指出“Civil”(可能是字符串值)是未知变体。

我猜我们设置 Rust 枚举的方式有问题,但由于我们是 Rust 的初学者,我们无法真正弄清楚如何修复它。

您将如何为 Serde 创建正确的类型以轻松反序列化我们的 JSON?

json rust serde tauri

3
推荐指数
1
解决办法
300
查看次数

标签 统计

json ×1

rust ×1

serde ×1

tauri ×1