如何反序列化包含更多JSON字符串的JSON?
我有一个 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();
但这令人恐慌 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,
}