serde_json::to_string()
函数将生成一个字符串,其中可能包括null
(对于Option<T>
)或0
(对于u32
)。这使得输出更大,所以我想忽略这些类型的值。
我想简化以下结构的JSON字符串输出:
use serde_derive::Serialize; // 1.0.82
#[derive(Serialize)]
pub struct WeightWithOptionGroup {
pub group: Option<String>,
pub proportion: u32,
}
字符串
当group
为None
且proportion
为0时,JSON字符串应为"{}"
感谢How do I change Serde's default implementation to return an empty object instead of null?的回答,它可以解决Option
问题,但对于0
没有解决方案。
3条答案
按热度按时间hc2pp10m1#
Skip serializing field链接给予我答案。
固定代码:
字符串
rhfm7lfc2#
有几种方法可以做到这一点:
skip_serialising_if
属性标记每个字段,以指示何时跳过它们。这要容易得多,但你必须记住对每个字段都这样做。rfbsl7qr3#
对于那些搜索如何跳过某些
enum
条目的序列化的用户,可以这样做字符串