我有一个 JSON 对象,其中包含一个本身就是 JSON 对象的字符串。我怎样才能反序列化它?
我希望能够执行以下操作:
#[derive(Deserialize)]
struct B {
c: String,
d: u32,
}
#[derive(Deserialize)]
struct Test {
a: String,
b: B,
}
let object: Test = serde_json::from_str(
r#"
{
"a": "string",
"b": "{\"c\":\"c_string\",\"d\":1234}"
}
"#,
)
.unwrap();
Run Code Online (Sandbox Code Playgroud)
但这令人恐慌 invalid type: string "{\"c\":\"c_string\",\"d\":1234}", expected struct B
您可以将serde_with板条箱用于json::nested:
#[derive(Deserialize)]
struct Test {
a: String,
#[serde(with = "serde_with::json::nested")]
b: B,
}
Run Code Online (Sandbox Code Playgroud)