我有两个结构体:
#[derive(Serialize)]
struct Post {
title: String,
// ...more fields...,
comments: Vec<Comment>,
}
#[derive(Serialize)]
struct Comment {
body: String,
// ...more fields...,
}
我想生成两种JSON文件:
- 一个
Vec<Post>
的JSON索引,其中应包括除comments
之外的所有字段。 - 包括所有字段的
Post
的JSON。
使用Serialize
派生属性是否可以实现这一点?我在Serde的文档中找到了skip_serializing_if
属性,但据我所见,它对我没有用,因为我要根据我正在生成的JSON文件跳过而不是基于字段的值。
目前,我正在使用json!
宏来生成索引,这需要手动列出Post
的所有字段,但我希望有更好的方法来完成这项任务。
json!
,因为这比创建一个新的结构体然后实现转换函数更短。 - Dogbert