Sen alanı için a custom serialization function sağlamak serialize_with
attribute kullanabilirsiniz:
#[macro_use]
extern crate serde_derive;
extern crate serde;
use serde::Serializer;
fn round_serialize<S>(x: &f32, s: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
s.serialize_f32(x.round())
}
#[derive(Debug, Serialize)]
pub struct NodeLocation {
#[serde(rename = "nodeId")]
id: u32,
#[serde(serialize_with = "round_serialize")]
lat: f32,
#[serde(serialize_with = "round_serialize")]
lon: f32,
}
(Ben konuyu önlemek için en yakın tam sayıya yuvarlanır ettik "k float yuvarlamak için en iyi yolu nedir ondalık").
impl Serialize for NodeLocation {
fn serialize<S>(&self, s: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
// Implement your preprocessing in `from`.
RoundedNodeLocation::from(loc).serialize(s)
}
}
El 'Serialize' uygulanması:
diğer yarı kılavuzu yaklaşım otomatik türetilmiş seri ayrı yapı oluşturmak ve bu kullanarak seri uygulamaktır? – Kroltan