You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust使用reqwest报错no method named `json` found for impl Future如何解决

错误产生原因

  • reqwest默认提供的顶层reqwest::get为异步API,调用后返回的是实现了Future trait的异步待执行对象,并非请求完成后的Response实体,Future本身没有定义json方法,因此调用时抛出找不到方法的错误。
  • Cargo.toml中的依赖配置存在拼写错误:启用特性的字段名为features,你编写的feature为错误拼写,会导致声明的blocking、json特性没有实际生效。

修复方案

可根据你的工程架构选择以下任意一种方案:

方案1:使用blocking同步API(适配非异步工程)

  1. 先修正Cargo.toml中的依赖配置:
reqwest = {version = "0.11.4", features = ["blocking", "json"]}
  1. 调整业务代码,使用blocking模块下的同步方法:
use std::collections::HashMap;

pub fn get_user_info(id: i64) -> &'static str {
    // 调用blocking同步get,请求完成后直接返回Response
    let resp = reqwest::blocking::get("https://httpbin.org/ip")
        .unwrap() // 此处仅为示例,实际开发请处理请求错误
        .json::<HashMap<String, String>>()
        .unwrap(); // 此处仅为示例,实际开发请处理Json解析错误
    println!("{:#?}", resp);
    return "ok";
}

方案2:保留异步逻辑(适配异步工程)

如果你的工程基于异步架构开发,不需要启用blocking特性,调整代码适配异步规则即可:

use std::collections::HashMap;

// 函数声明为异步
pub async fn get_user_info(id: i64) -> &'static str {
    // 对Future执行await拿到Response
    let resp = reqwest::get("https://httpbin.org/ip")
        .await
        .unwrap() // 处理请求错误,示例用unwrap简化
        .json::<HashMap<String, String>>()
        .await
        .unwrap(); // 处理Json解析错误,示例用unwrap简化
    println!("{:#?}", resp);
    return "ok";
}

内容的提问来源于stack exchange,提问作者Dolphin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:45:06