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

标签 json http rust

我正在对某个 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/

相关文章:

android - 如何解析带有许多斜杠的json

javascript - 将数组从 PHP 返回到 JavaScript,无需 JSON

json - 在golang中解码数组json

rust - 如何将 `quick-error` 与盒装错误类型一起使用?

json - Spring MVC(或 Spring Boot)。针对安全相关异常的自定义 JSON 响应,例如 401 Unauthorized 或 403 Forbidden)

javascript - 在 Angular 6 中一一处理 http 响应

javascript - 如何制作完整的 POST XMLHttpRequest?

http - IIS和HTTP流水线,并行处理请求

rust - 如何处理 HashMap 的值(可能)有多种类型传递给函数?

opengl - 为什么OpenGL调整大小的图像看起来像素化?