提问人:Thomas W 提问时间:11/17/2023 更新时间:11/22/2023 访问量:58
序列化 from/to null
Serialize from/to null
问:
我想出了如何在 JSON 中将类似单元的枚举变体序列化为,但是有没有一种简单的方法可以在不编写专用反序列化函数的情况下对其进行反序列化?null
null
use serde::{Serialize, Deserialize};
use serde_json::from_str;
#[derive(Serialize, Deserialize)]
struct Entry(String, String);
#[derive(Serialize, Deserialize)]
#[serde(untagged)]
enum Action {
#[serde(serialize_with = "serde::ser::Serializer::serialize_none")]
Delete(),
Create(Entry),
}
type Actions = Vec<Action>;
#[test]
fn this_works() {
from_str::<Actions>(r#"[["id", "value"], []]"#).unwrap();
}
#[test]
fn this_does_not_work() {
// ... but this is what I would like to use
from_str::<Actions>(r#"[["id", "value"], null]"#).unwrap();
}
答:
0赞
Thomas W
11/22/2023
#1
正如 @cafce25 所指出的,这按预期工作:
use serde::{Serialize, Deserialize};
use serde_json::from_str;
#[derive(Serialize, Deserialize)]
struct Entry(String, String);
#[derive(Serialize, Deserialize, Default)]
#[serde(untagged)]
enum Action {
#[default]
Delete,
Create(Entry),
}
type Actions = Vec<Action>;
#[test]
fn works() {
from_str::<Actions>(r#"[["id", "value"], null]"#).unwrap();
}
在 Rust Playground 上试用。
评论
Delete
#[default]
#[derive(Default)]