TPo*_*uen 3 json rust serde tauri
我正在尝试构建一个 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?
默认情况下,作为 serde 的枚举使用标签进行[反]序列化,遵循格式{"Name":"Civil"}
。
你想要的是一个未标记的 enum。它直接序列化值,并反序列化为反序列化成功的第一个变体:
#[derive(Deserialize)]
#[serde(untagged)]
pub enum CriterionValue {
IntegerArray(Vec<i32>),
Name(String),
Boolean(bool),
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
300 次 |
最近记录: |