我想将一个相当深的 JSON 反序列化为 Rust 结构体:
在实现
{
"root": {
"f1": {
"f2": {
"f3": 123
}
}
}
}
在实现
Deserialize
时,我必须创建太多的结构体——对于上述JSON中的每个层级都要创建一个结构体。struct Root {
f1: Field1
}
struct Field1 {
f2: Field2
}
struct Field3 {
f3: Field3
}
// ...
有没有什么方法可以避免使用这么多的结构体?我没有找到任何有用的属性来帮助衍生出新的结构体。我想要像下面这样的东西:
struct Root {
// some attr?
f3: u64
}
当然,可以实现自定义反序列化,但我想知道是否有默认方法来实现这一点。
serde(flatten)
,据我所知,只能反向工作(尽管有可能曾经讨论过嵌套json的展平)。 - Masklinnjson_dotpath
crate 可以让生活变得更加轻松。 - cyqsimon