https://serde.rs/enum-representations.html#internally-tagged [[タグ付き共用体]]を変換したい場合。以下の[[JSON]]だと ```json {"type": "request", "id": "...", "method": "...", "params": {...}} ``` 以下のように書く。 ```rust #[derive(Serialize, Deserialize)] #[serde(tag = "type")] enum Message { #[serde(rename = "request")] Request { id: String, method: String, params: Params }, #[serde(rename = "response")] Response { id: String, result: Value }, } ``` - `#[serde(tag = "...")`でタグとなるプロパティ名を指定 (上記では`type`) - `Request`ではなく`request`として扱うため、`#[serde(rename = "...")`で名称の変更 (上記では`request`) ## 参考 - [RustのSerdeクレートで共用体を扱う](https://zenn.dev/masinc/articles/b307d31fd4b0b64674e4#%E3%82%BF%E3%82%B0%E4%BB%98%E3%81%8D%E5%85%B1%E7%94%A8%E4%BD%93)