8

我对 rust 完全陌生,我正在尝试找出如何从 URL 端点加载反序列化任意 JSON 结构。

reqwest README 中的相应示例如下所示:

use std::collections::HashMap;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let resp = reqwest::get("https://httpbin.org/ip")
        .await?
        .json::<HashMap<String, String>>()
        .await?;
        println!("{:#?}", resp);
    Ok(())
}

所以在这个例子中,目标结构——即一个以字符串为键、字符串为值的HashMap对象——显然是已知的。

但是,如果我不知道在请求端点上接收到的结构是什么样的呢?

4

1 回答 1

8

您可以使用serde_json::Value

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let resp = reqwest::get("https://httpbin.org/ip")
        .await?
        .json::<serde_json::Value>()
        .await?;
    println!("{:#?}", resp);
    Ok(())
}

您必须添加serde_json到 Cargo.toml 文件中。

[dependencies]
...
serde_json = "1"
于 2020-09-13T16:25:16.317 回答