【发布时间】:2021-07-12 04:44:11
【问题描述】:
是否可以只提取此 json items 数组的 Message 结构?
如果项目中有多个条目,我的目标是获取消息的 Vec。
{
"items": [
{
"Message": {
"data": "data",
"header": "header"
},
"structx": {
"val": 1
},
"val1": "test"
}
]
}
到目前为止,我有这些结构可以反序列化上述内容。
#[derive(Debug, Deserialize, Serialize)]
struct Items {
items: Vec<Message>,
}
#[derive(Debug, Deserialize, Serialize)]
struct Message {
#[serde(rename = "Message")]
msg: Payload,
}
#[derive(Debug, Deserialize, Serialize)]
struct Payload {
header: String,
data: String,
}
我是这样反序列化的:
let x = json_string; // the above json
let msg: Items = serde_json::from_str(&x)?;
这可行,但也许它可以变得更清洁。 我想到了这样的事情(不起作用),这样我就可以删除不必要的结构(项目,消息):
let msg: Vec<Payload> = serde_json::from_str(&x)?;
【问题讨论】:
标签: json serialization rust flatten serde