我正在编写一个库来将 JSON 的子集反序列化为预定义的 Python 类型。
我想将任意 JSON 反序列化为一个像 serde-json 一样嘎嘎作响的对象Value
。但是,我不希望它反序列化为' String
s、Number
's 和Bool
类型转换)将字节字符串解析为正确的任意 Python 类型。像这样的东西:
use serde::Deserialize;
use serde_json::value::RawValue;
use serde_json::Map;
#[derive(Deserialize)]
pub enum MyValue<'a> {
Null,
Bytes(&'a RawValue),
Array(Vec<MyValue<'a>>),
Object(Map<String, MyValue<'a>>),
}
这将需要编写很多特征,以便它的行为类似于Value
,而且我什至不确定它是否会忽略反序列化结构部分并将所有内容放入RawValue
.
最干净的方法是什么?