gpt4 book ai didi

json - 异步解析来自请求 GET 调用的 JSON 响应

转载 作者:行者123 更新时间:2023-11-29 08:28:48 24 4
gpt4 key购买 nike

我正在对某个 API 进行 GET 调用,该 API 会返回 JSON 对象的 list。但是,我无法将其解析为自定义数据结构列表。

离我最近的地方

struct Pokemon {
id: i32,
name: String,
height: i32,
weight: i32,
}

let mut response = client.get("http://pokeapi.co/api/v2/pokemon/111")
.send()
.expect("Failed to send request");
if let Ok(pokemon) = response.json::<Pokemon>() {
println!("{:#?}", pokemon);
}

谁能给我提供合适的例子。另外,这是这样做的标准方法吗?我的意思是使用像

这样的东西会有什么不同
let url = url.parse().expect("API URL parsing bug");
let request = Request::new(reqwest::Method::GET, url);

self.inner
.execute(request)
.map_err(Error::Request)
.and_then(move |response: Response| {
...
})

最佳答案

为了使用Response::json,您必须为Pokemon 实现serde::Deserialize。您可以通过将以下内容添加到您的 Cargo.toml 中的 [dependencies] 下来执行此操作。

serde = { version = "1.0", features = ["derive"] }

然后,在文件顶部添加 use serde::Deserialize;,并将 Pokemon 的声明更改为:

#[derive(Deserialize)]
struct Pokemon {
id: i32,
name: String,
height: i32,
weight: i32,
}

关于json - 异步解析来自请求 GET 调用的 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56684397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com