#Rust #serde ## 事象 デフォルトでは`null`相当の値が出力される。 ## 解決方法 ### 普通のやり方 `#[skip_serializing_if = "Option::is_none"]`を指定する。 https://serde.rs/field-attrs.html#skip_serializing_if このやり方はすべてのFieldに指定が必要なため面倒。 ### 楽なやり方 [[serde_with]]の[skip_serializing_none]を使う。 [skip_serializing_none]: https://docs.rs/serde_with/1.4.0/serde_with/attr.skip_serializing_none.html structにアノテーションをつけるだけ、楽チン。 ```rust use serde_with::skip_serializing_none; #[skip_serializing_none] #[derive(Debug, Deserialize, Serialize)] pub struct Trip { route_id: RouteId, trip_headsign: Option<String>, } ``` ただ、これだとCSVが上手く出力できない。