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

Nil*_*dré 2 json rust serde

我有一个 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

Nil*_*dré 5

您可以将serde_with板条箱用于json::nested

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