要获取多个 JSON 中的 completion 字段的值,可以对返回的 JSON 数据进行处理,将其中的每个 JSON 对象按顺序取出,然后获取其中的 completion 字段的值。可以使用 serde_json 库中的 Deserializer 来实现这个功能。以下是修改后的代码示例:/n/nrust/nuse std::{io, collections::HashMap};/nuse reqwest::header::HeaderMap;/nuse serde::{Deserialize, Deserializer};/n/n#[tokio::main]/nasync fn main() {/n match send_post().await {/n Ok(res) => {/n // 解析返回的 JSON 数据/n let data: Vec<Completion> = serde_json::Deserializer::from_str(&res)/n .into_iter()/n .map(|v| Completion::deserialize(v).unwrap())/n .collect();/n /n // 获取 completion 字段的值/n let completions: Vec<String> = data.iter().map(|c| c.completion.clone()).collect();/n println!('{:#?}', completions);/n }/n Err(e) => {/n eprintln!('{:?}', e)/n }/n }/n}/n/n// 表示一个 completion 对象/n#[derive(Debug, Deserialize)]/nstruct Completion {/n #[serde(rename = /'completion/')]/n completion: String,/n}/n/nasync fn send_post() -> Result<String, reqwest::Error> {/n let client = reqwest::Client::new();/n let mut header = HeaderMap::new();/n header.insert(/'User-Agent//n /Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML like Gecko) /n Chrome/110.0.0.0 Safari/537.36/'.parse().expect(/'unsolve the userAgent header value./'),/n );/n header.insert(/'referer/', /'https//www.covery.com/'.parse().expect(/'unsolve the referer value./'));/n header.insert(/'sec-ch-ua/', /'sec-ch-ua/'.parse().expect(/'ms/'));/n/n let mut data = HashMap::new();/n data.insert(/'prompt/', /'hello/');/n/n Ok(client.post(/'https://free-api.cveoy.com/v3/completions/')/n .headers(header)/n .json(&data)/n .send()/n .await?/n .text()/n .await?)/n}/n/n/n这样就可以获取到每个 completion 对象中的 completion 字段的值,并以 Vec<String> 的形式打印出来。/n/n## 解决 error[E0432]: unresolved import 'serde'/n/n要使用 serde 库,需要在项目的 Cargo.toml 文件中添加对应的依赖项。可以在 [dependencies] 部分添加以下内容:/n/ntoml/n[dependencies]/nserde = { version = /'1.0/', features = [/'derive/'] }/nserde_json = /'1.0/'/n/n/n这样就可以在代码中使用 serde 库了。如果已经添加了依赖项但仍然出现该错误提示,可以尝试重新构建项目或者检查依赖项的版本是否正确。

如何获取多个 JSON 中的 completion 字段的值

原文地址: https://www.cveoy.top/t/topic/lBNT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录