代码之家  ›  专栏  ›  技术社区  ›  LongHike

如何使用reqwest get-in-Rust对任意json结构进行反序列化?

  •  0
  • LongHike  · 技术社区  · 4 年前

    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(())
    }
    

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

    1 回复  |  直到 4 年前
        1
  •  1
  •   Ross MacArthur    4 年前

    你可以用 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 给你的货物.toml文件。

    [dependencies]
    ...
    serde_json = "1"
    
    推荐文章