json - 异步解析来自请求 GET 调用的 JSON 响应
问题描述
我正在对一些 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| {
...
})
解决方案
为了使用Response::json
,你必须实现serde::Deserialize
for Pokemon
。您可以通过将以下内容添加到 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,
}
推荐阅读
- tensorflow - 如何在 tizen studio 中使用 Tensorflow?
- python - MstarUpgrade.bin 文件解压
- android - Fresco - 如何将图像保存到本地存储
- compilation - 纯 D 函数在运行时计算(不是编译时)
- html - 当数组中只有一个元素时不会触发更改事件
- javascript - 使用制表符 (HTML) 遍历子项
- batch-file - 每次按 Enter 时执行命令,直到我按一个键批量退出
- python - 在 Keras 模型中重塑编码器解码器
- php - php base_convert 不适用于非整数?
- jquery - 我无法从 ajax 调用中输出 json