要在 Rust 中反序列化嵌套结构,您可以使用像 serde 这样的库。 serde 是一个流行的库,用于序列化和反序列化 Rust 数据结构。
以下是如何使用 serde 反序列化嵌套结构的示例:
extern crate serde;
#[macro_use]
extern crate serde_derive;
extern crate serde_json;
#[derive(Serialize, Deserialize)]
struct Inner {
a: i32,
b: i32,
}
#[derive(Serialize, Deserialize)]
struct Outer {
inner: Inner,
}
fn main() {
let json = r#"{"inner":{"a":1,"b":2}}"#;
let outer: Outer = serde_json::from_str(json).unwrap();
println!("{:?}", outer);
}
extern crate serde;
#[macro_use]
extern crate serde_derive;
extern crate serde_json;
#[derive(Serialize, Deserialize)]
struct Inner {
a: i32,
b: i32,
}
#[derive(Serialize, Deserialize)]
struct Outer {
inner: Inner,
}
fn main() {
let json = r#"{"inner":{"a":1,"b":2}}"#;
let outer: Outer = serde_json::from_str(json).unwrap();
println!("{:?}", outer);
}
在此示例中,Outer 结构有一个名为 inner 的字段,它是一个 Inner 结构。 Inner 结构有两个字段 a 和 b,它们都是整数。
要反序列化结构,我们首先需要使用 serde_json 提供的 from_str 函数解析 JSON 字符串。这个函数返回一个Result对象,所以我们需要使用unwrap方法来获取实际值。
最后,我们可以打印外部对象以查看反序列化数据。这应该打印 Outer { inner: Inner { a: 1, b: 2 } }。
您还可以在结构上使用 #[derive(Serialize, Deserialize)] 注释来自动为您的结构实现序列化和反序列化特征。这允许您直接在结构上使用 serde_json::from_str 函数。
我希望这有帮助!如果您有任何问题,请告诉我。