我正在对某个API进行GET调用,这反过来将使我list
返回JSON对象。但是,我无法将其解析为自定义数据结构列表。
最近我可以来
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| {
...
})
答案 0 :(得分:1)
要使用Response::json
,必须为serde::Deserialize
实现Pokemon
。为此,您可以在[dependencies]
下的Cargo.toml中添加以下内容。
serde = { version = "1.0", features = ["derive"] }
然后,在文件顶部添加use serde::Deserialize;
,并将Pokemon
的声明更改为:
#[derive(Deserialize)]
struct Pokemon {
id: i32,
name: String,
height: i32,
weight: i32,
}