如果我可以访问一个API并以JSON的形式获取数据,我该如何组织它并在Rust代码中使用它?我正在尝试理解如何创建一个包含节的结构体。例如,要创建这样的结构:
struct mainstruct {
section1 : {
brand : "something",
price : "whatever",
},
section2 : {
title : "here",
description : "many",
},
}
我是否用这两个节创建两个impl
,并将它们包含在一个新的结构中?
我是否创建两个enum
并将这些enum
包含在一个新结构中?
我使用以下代码从一个虚拟API获取数据:
use reqwest::{Client, Error};
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Product {
pub id: i64,
pub title: String,
pub description: String,
pub price: i64,
pub rating: f64,
pub stock: i64,
pub brand: String,
pub category: String,
pub thumbnail: String,
pub images: Vec<String>,
}
#[tokio::main]
async fn main() -> Result<(), Error> {
let product: Product = Client::new()
.get("https://dummyjson.com/products/1")
.send()
.await?
.json()
.await?;
println!(">>>>> Brand is : {:#?}", product.brand);
Ok(())
}
我如何创建某种类型的数据,以这样的方式组织/呈现它?
info {
price : Product.price,
category : Product.category,
},
data {
title : Product.title,
description : Product.description,
}
1条答案
按热度按时间sy5wg1nm1#
Rust不支持嵌套结构定义;如果你想的话,他们需要分开
虽然现在这个结构与API中的JSON结构不同。在这种情况下,您可以聪明地使用
#[serde(flatten)]
(demo on the playground)。但如果这不合适,你可能需要为你的“域”(你想在内部使用的)和“数据传输”(只用于与其他东西接口)有单独的类型定义,并可能实现
From
来定义彼此之间的转换(demo on the playground)。