从 reqwest 文档中,您可以获取反序列化的 json或请求响应中的正文。
我不知道如何同时获得它们。我的要求是我想要解码后的 json 在代码中使用,但想要打印出文本以进行调试。不幸的是,尝试获取这两个函数会给您带来有关使用移动值的错误,因为这两个函数都拥有请求的所有权。克隆请求似乎也不可能。
这是我希望能够执行的操作的示例,但第 4 行无效,因为它使用了在第 1 行移动的响应。
let posts: Vec<Post> = match response.json::<PostList>().await {
Ok(post_list) => post_list.posts,
Err(e) => {
let text = response.text().await.unwrap();
println!("Error fetching posts: {}, {}", e, text);
Vec::new()
}
};
Run Code Online (Sandbox Code Playgroud)
Max*_*nko 12
json()不能在同一响应上调用和的原因text()是,这两种方法都必须读取整个响应流,并且只能执行一次。
这里最好的选择是首先将其读入 a String,然后从该字符串中解析 JSON:
let response_text = response.text().await.unwrap();
let posts: Vec<Post> = match serde_json::from_str::<PostList>(&response_text) {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2296 次 |
| 最近记录: |