如何反序列化包含更多 JSON 的字符串的 JSON?

How can I deserialize JSON that contains a string with more 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 crate with json::nested:

#[derive(Deserialize)]
struct Test {
    a: String,
    #[serde(with = "serde_with::json::nested")]
    b: B,
}