I’m not a fan of serde either. I wish there was a way to have foreign derives (or even better: compile-time reflection). There wasn’t a great way to serialize things in Rust in the standard library and the ecosystem crystalized around serde, which is suboptimal imo. There are libraries like facet[0] that implement general reflection, rather than just a subset of it, but it probably won't be supported by all of your dependencies.
[0] https://github.com/facet-rs/facet