json метод не найден при десериализации ответа reqwest - PullRequest
0 голосов
/ 06 мая 2020

Я новичок в Rust, и я просто не могу найти решение этой проблемы. Я пытаюсь получить ответ на запрос получения как json.

#[macro_use]
extern crate serde;
extern crate serde_derive;
extern crate reqwest;
use reqwest::Error;

fn main(){
    #[derive(Deserialize)]

struct Ip {
    origin: String,
}

let json: Ip = reqwest::get("http://httpbin.org/ip").json();
//reqwest::get("http://httpbin.org/ip")?.json()?;
}

Вот машина go .toml

[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_derive = "1.0"
reqwest = { version = "0.10", features = ["blocking"] }

Я все время получаю ошибку json error

Кроме того, если Я использую

reqwest::get("http://httpbin.org/ip")?.json()?;

(добавление вопросительных знаков). Я получаю еще одну ошибку:

cannot use the `?` operator in a function that returns `()`
this function should return `Result` or `Option` to accept `?`

Как исправить это?

1 Ответ

1 голос
/ 06 мая 2020

Согласно do c, вам необходимо включить функцию json reqwest в вашем Cargo.toml:

reqwest = { version = "0.10", features = ["blocking", "json"] }

Также reqwest::get является частью async API. Поскольку ваш main синхронный, вы хотите reqwest::blocking::get

...