序列化时添加附加字段

por*_*ton 4 rust serde

在 Serde 序列化器中,如何添加附加字段:

#[derive(Serialize)]
struct X {
  a: u32,
  b: u32,
  c: u32,
}
Run Code Online (Sandbox Code Playgroud)

我想添加到 JSON 序列化字段dvalue "qwe"X如何不从头开始完全编写序列化器?

kmd*_*eko 6

自定义Serialize实现还不错:

use serde::ser::{Serialize, Serializer, SerializeStruct};

struct X {
  a: u32,
  b: u32,
  c: u32,
}

impl Serialize for X {
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: Serializer,
    {
        let mut x = serializer.serialize_struct("X", 4)?;
        x.serialize_field("a", &self.a)?;
        x.serialize_field("b", &self.b)?;
        x.serialize_field("c", &self.c)?;
        x.serialize_field("d", "qwe")?;
        x.end()
    }
}
Run Code Online (Sandbox Code Playgroud)